Gracefully Quit Ubuntu Apps with SIGTERM First
Gracefully Quit Ubuntu Apps with SIGTERM First
Ubuntu で Slack を更新したいとき、ウィンドウを閉じただけでは Electron の helper process が残ることがある。
今回の環境は snap 版 Slack。
基本方針は、いきなり強制終了しないこと。 まず SIGTERM でアプリに終了を依頼し、残った場合だけ SIGKILL を使う。
Check
まず実際の process を見る。
1
ps aux | grep -i '[s]lack'
or
1
pgrep -af 'slack|Slack'
1
snap list slack
ここで /snap/slack/... と Slack/Crashpad が見えたので、今回の pattern はこれに合わせた。
Quit
SIGTERM は process に終了を依頼する signal。
kill <pid> の既定も SIGTERM。
kill -TERM <pid> はそれを明示しているだけ。
アプリが handler を持っていれば、保存、接続終了、log 書き込みなどの後処理ができる。
handler がなければ、通常は既定動作で終了する。 無視された場合だけ SIGKILL を使う。
まず TERM。
1
sudo pkill -TERM -u hao -f '/snap/slack/|Slack/Crashpad'
少し待って確認。
1
2
sleep 5
pgrep -u hao -af '/snap/slack|Slack' || true
残っている場合だけ KILL。
1
sudo pkill -KILL -u hao -f '/snap/slack/|Slack/Crashpad'
Note
この pattern は snap 版 Slack の実例。
deb 版、flatpak 版、別バージョンでは path が変わる可能性があるので、毎回最初に ps / pgrep で確認する。
PID を一つずつ kill するより、user と process pattern を絞って pkill する方が扱いやすい。
This post is licensed under CC BY 4.0 by the author.