Post

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.