Systemd
如何在重啟或關機時執行 /usr/lib/systemd/system-shutdown/ 中的腳本?
/usr/lib/systemd/system-shutdown/
或者對於 Debian
/lib/systemd/system-shutdown/
讓它在重新啟動或關機時執行。從
https://www.freedesktop.org/software/systemd/man/systemd-halt.service.html:
在執行實際系統之前,halt/poweroff/reboot/kexec systemd-shutdown 將執行 /usr/lib/systemd/system-shutdown/ 中的所有執行檔,並向它們傳遞一個參數:“halt”、“poweroff”、“reboot” " 或 “kexec”,具體取決於所選的操作。此目錄中的所有執行檔都是並行執行的,並且在所有執行檔完成之前不會繼續執行操作。
我的腳本在How to run a script at shutdown on Debian 9 or Raspbian 8 (Jessie)中描述為:
#!/bin/sh touch /test
但是,它似乎沒有在我的 Debian 系統上執行,我什至將它報告為bug。
事實上,腳本正在執行。正如 Bigon 和錯誤報告中指出的那樣,
touch
只是無法生效,因為在執行腳本時文件系統已經以只讀方式安裝/lib/systemd/system-shutdown/
。可以通過在 之前掛載和 fs 讀寫來證明這一點
touch
:#!/bin/sh mount -oremount,rw / touch /test mount -oremount,ro /
現在
/test
重啟後真的出現了。然而,這也意味著通過這個文件夾執行我的腳本將沒有用,因為它發生得太晚了。
為了寫入日誌文件等,需要通過Bigon建議的服務提前執行腳本。我在How to run a script at shutdown on Debian 9 or Raspbian 8 (Jessie)對此進行了解釋。