SSHサーバーがシャットダウンする前にsystemdサービスが実行されているかどうかを確認する方法は?

SSHサーバーがシャットダウンする前にsystemdサービスが実行されているかどうかを確認する方法は?

systemdコンピュータがシャットダウンする前にいくつかのタスクを実行するサービスを作成しました。その単位ファイルは次のとおりです。

[Unit]
Before=shutdown.target
DefaultDependencies=no

[Service]
Type=simple
ExecStart=/opt/demo.sh
TimeoutSec=infinity

[Install]
WantedBy=shutdown.target

現在のコンピュータのネットワーク接続が失われる前にスクリプトが実行されますが、SSH接続が閉じてから再接続しようとすると、「接続が拒否されました」エラーで失敗します。私はスクリプト自体が終了するまで(つまりtail -f /var/log/syslog実行できるように)SSH接続を維持することを好みます。

SSHサーバーがシャットダウンする前にスクリプトを強制する方法は?

ベストアンサー1

次のようにsystemdユニットを使用して、目的の結果を得ることができます。

[Unit]
Description=Service to run on shutdown before any other services
After=default.target

[Service]
Type=oneshot
ExecStart=/bin/true
ExecStop=/opt/demo.sh
RemainAfterExit=yes
TimeoutStopSec=0

[Install]
WantedBy=default.target

systemd は依存関係に応じて逆順でサービスを停止します。したがって、上記のサービスは、/bin/trueシステムが停止/終了状態に達し、default.targetスクリプトが/opt/demo.sh停止/終了状態になった後に開始されます。要件に応じて調整する必要がありますTimeoutStopSec。現在はタイムアウトが発生しないように設定されています(デフォルトは90秒ではなく)。

おすすめ記事