nohupを使用して端末でPlasma 5を再起動するには?

nohupを使用して端末でPlasma 5を再起動するには?

Plasma 5の再起動に関する多くの質問と回答があります。 KRunnerを使用するのが最善の選択であることを知っていますが、今日はKRunnerにアクセスできないため、端末を使用する必要があります。

読んだ後nohup、disown、&の違い私はこれらの2つのトピック(Plasma 5の再起動とnohub / disown /バックグラウンドタスク)をKDE Plasma 5を正しい方法で再起動することに専念する1つの答えにマージする必要があると思います。 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

関連情報