关于重新启动 Plasma 5 有很多问题和答案。我意识到使用 KRunner 是最好的选择,但今天我无法访问 KRunner,不得不使用终端。
看完之后nohup、disown 和 & 之间的区别,我觉得这两个主题(重新启动 Plasma 5 和 nohub/disown/background jobs)需要合并成一个答案,专门用于以正确的方式重新启动 KDE Plasma 5。我看到的关于重新启动 Plasma 5 的几乎所有答案都忽略了nohup
.
通过遵循有关重新启动 Plasma 5 的不同答案,我多次发现自己无法在不终止新启动的 Plasma 5 会话的情况下关闭终端窗口。
以下脚本来自一些答案,大部分是https://unix.stackexchange.com/a/499373,并修改为包括nohup
.这是最终的、全面的解决方案吗?或者这是需要避免的混乱?
#!/bin/sh
kbuildsycoca5 # rebuilds the plasmashell database
timeout 5 kquitapp5 plasmashell #without timeout, it can hang for ~30-60 seconds
pgrep -U $USER -x plasmashell &>/dev/null && pkill -U $USER -x plasmashell
pgrep -U $USER -x plasmashell &>/dev/null && pkill -U $USER -x -9 plasmashell # here the process does not get to clean-up.
killall -9 plasmashell #sends a signal to all processes running any of the specified commands
pgrep -U $USER -x plasmashell &>/dev/null && echo "ERROR: cannot kill plasmashell"
nohup plasmashell &
我的具体问题是关于最后一行:
nohup plasmashell &
在这种情况下这是正确的吗?
答案1
像评论中那样重新启动 kde 应用程序是错误的方法。
我有一个脚本,如果我想重新启动诸如plasmashell之类的东西,我会调用它......
#!/bin/sh
for i in $* do
kquitapp5 ${i}
PID=$(ps -ax | grep ${i}$ | awk '{print $1}'
test -n ${PID} && kill -9 ${PID}
kstart5 ${i}
done