ArchLinuxで正常なシャットダウン/再起動を実行するためにGNOME Shellを使用しようとしています。閉じるように要求すると、開いているファイルを適切に閉じたり保存したりできるオープンプログラム時間を提供せずにすぐに閉じます。そのため、たとえば、Chromeを再起動するたびにセッションが正しく閉じられなかったというメッセージが表示されます。オンラインで読んだことによれば、systemdがプロセスを終了したときに最初にプロセスを送信し、指定されたタイムアウト内にプロセスが終了しSIGTERM
ないSIGKILL
場合、プロセスは終了します。しかし、私のシステムではその内容がSIGKILL
すぐに送信されたことを確認しましたがSIGTERM
、これがまさにプログラムが異常終了した理由のようです。
私は少し見つけました。文書(正しく読んだ場合)送信前のタイムアウトはSIGKILL
optionsで設定できることがわかります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が実際にサブアイテムを閉じる方法を確認/設定する方法はありますか?
ベストアンサー1
デスクトップを正常にシャットダウンするには、TimeoutStopSec=
GDMまたは使用している他のディスプレイマネージャを増やす必要があります。