~によるとこの回答 そしてこのバグレポート スクリプトを入れてください。
/usr/lib/systemd/system-shutdown/
またはDebianの場合
/lib/systemd/system-shutdown/
再起動またはシャットダウン時に実行します。 ~から
https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html:
実際のシステム quit/poweroff/reboot/kexec を実行する前に、systemd-shutdown は /usr/lib/systemd/system-shutdown/ にあるすべての実行可能ファイルを実行し、「halt」、「poweroff」、「reboot」という引数を渡します。または、「kexec」(選択した操作に応じて)ディレクトリ内のすべての実行可能ファイルは並列に実行され、すべての実行可能ファイルが完了するまで実行は続行されません。
私のスクリプトは以下に説明されています。Debian 9またはRaspbian 8で終了時にスクリプトを実行する方法(Jessie)ように:
#!/bin/sh
touch /test
しかし、私のDebianシステムでは実行されていないようです。でも、次のように報告します。抜け穴。
答え1
実際、スクリプトは実行中です。 Bigonとバグレポートで指摘したように、touch
スクリプトが実行されたときにファイルシステムがすでに読み取り専用でマウントされているため、機能しません。/lib/systemd/system-shutdown/
これは次のようにマウントし、fsを読み書きすることで証明できますtouch
。
#!/bin/sh
mount -oremount,rw /
touch /test
mount -oremount,ro /
これで/test
、再起動した後にのみ実際に表示されます。
しかし、これはまた、このフォルダを介して私のスクリプトを実行するのが遅すぎるため、役に立たないことを意味します。
ログファイルなどに書き込むには、推奨されるサービスを介してスクリプトを事前に実行する必要があります。ビゴン。私はこれを説明しますDebian 9またはRaspbian 8で終了時にスクリプトを実行する方法(Jessie)。
答え2
したがって、シャットダウン中にスクリプトを実行するには、.serviceファイルを追加する必要があります。以下を参照してください。シャットダウンする前にsystemdを使用してスクリプトを実行する方法は?
/lib/systemd/system-shutdown/
特別なケース用に予約されており、シャットダウン/再起動プロセスの終わりに実行されます。