GNOME Shellを使用してArchLinuxで正常なシャットダウン/再起動を試みています。現在、シャットダウンを要求すると、開いているファイルを正常に閉じたり保存したりする時間を開いているプログラムに与えることなく、すぐにシャットダウンします。私は、(例えば)Chromeを再起動するたびにその結果、それがプロセスをシャットダウンし、それが最初に送っている間、私はそれにsystemdを学んウェブ上で読み取ることによりなどのセッションが正しく閉じられていなかったことを私に告げるSIGTERM
が続くSIGKILL
プロセスが閉じない場合所定のタイムアウトで。しかし、SIGKILL
すぐに私のシステム上で送信されることに気づき、SIGTERM
これがプログラムが正常に終了しない原因だと思います。
(正しく読めば)送信前のタイムアウトはオプションで設定できると述べているドキュメントを見つけました。また、オプションで送信を無効にすることもできます。しかし、これらのオプションを設定する場所が見つかりません...これらのオプションを設定できるsystemdシャットダウン/再起動設定ファイルはありますか?SIGKILL
TimeoutStopSec=
SIGKILL
SendSIGKILL=
編集:
私はいくつかのテストを行い、2つの興味深いことを発見しました。
- このようにchromeを手動で
killall -SIGTERM chrome
閉じても、次回起動したときに正しく閉じられていないと文句を言うことはありません。代わりkillall -SIGKILL chrome
にこのように閉じると、文句を言うでしょう。これは、chromeがSIGTERMを正しく処理していることを示しています。 - シャットダウン手順の出力を見ると、systemdは
Sending SIGTERM...
すぐに出力しますSending SIGKILL...
以下のコメントによると、systemdはプロセスのみを処理しています。だから私の場合、GDM。これにより、問題は次のようになります。
- GDMがその子プロセス(Chromeなど)を正しく閉じない(つまり、SIGTERMをそれらに送信する)
- またはsystemdがGDMにSIGKILLメッセージを早期に送信し、子を正しく閉じる時間を与えていません。
GDMが実際にその子を閉じる方法を確認/構成する方法はありますか?
systemd's
制御下にある必要があります- systemd
ですpid 1
-しかし、Chromeはサブシェルのラッパースクリプトを実行し、その後子プロセスを呼び出します。それでも、zygotes
システムが適切に構成されている限り、強制終了するのに必要なことは行います。Arch wikiで推奨されているChromeの一時スペースソリューションの1つを使用していますか?
gnome-session
。