systemd:失敗した場合の起動プロセスの停止(実際に終了)

systemd:失敗した場合の起動プロセスの停止(実際に終了)

ワンタイムサービスが失敗した場合は、すぐに起動プロセスを停止してメッセージを表示(開始画面を終了)してからコンピュータをシャットダウンするにはどうすればよいですか?

私のサービスはスクリプトのみを起動します。何か間違っているか、より正確に言うと、特別なことが起こった場合は、マシンをシャットダウンしたいと思います。これまでスクリプトに1つを入れようとしましたsystemctl poweroff。ただし、残念ながら、この呼び出しはすぐに返され、開始プロセスは終了とほぼ同時に正常に続行されます。私の場合、終了が最終的に完了するまで数秒間ログイン画面が表示されます。

これは私のユニットファイルです:

[Unit]
Description=My Fancy Script
Before=NetworkManager.target

[Service]
Type=oneshot
ExecStart=/path/to/script
StandardOutput=journal+console

[Install]
WantedBy=basic.target

試してみましたが、FailureAction=それも効果がありませんでした。

これを行う方法についてのアイデアはありますか? 「典型的な」方法が必要です。たとえば、マウントポイントをマウントできない場合、システムはメンテナンスモード(ctrl-D;)に入り、起動が中断されます。

ベストアンサー1

「典型的な」方法が必要です。たとえば、マウントポイントをロードできない場合、システムはメンテナンスモードに入り、起動が中断されます。

まさにここに。見れば/usr/lib/systemd/system/local-fs.targetわかりますが、そうです。

OnFailure=emergency.target
OnFailureJobMode=交換 - 元に戻せません

おすすめ記事