Systemd
systemd:在文件系統以只讀方式掛載後在關機時執行腳本
在文件系統重新安裝為只讀後,有沒有辦法在關機時執行腳本?
我有一個連接到無線插座的樹莓派,我可以通過發送器和腳本來控制它。在文件系統以只讀方式安裝後,我想在關機時關閉該套接字(關閉樹莓的電源)。
我試過這個:
[Unit] Description=Test DefaultDependencies=no Requires=shutdown.target umount.target final.target After=shutdown.target umount.target final.target [Service] Type=oneshot ExecStart=/test KillMode=none [Install] WantedBy=halt.target
腳本 /test 會輸出目前的掛載。當它在關機時執行時,它表示根文件系統的讀/寫狀態,而不是預期的只讀狀態。
編輯:
/測試的內容:
#!/bin/bash echo -n 'Debug-Mount: ' > /dev/tty1 cat /proc/mounts | grep /dev/sda > /dev/tty1
關機時的螢幕輸出:
我找到了一個可靠的解決方案:只需將腳本放在 /usr/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”,具體取決於所選的操作。此目錄中的所有執行檔都是並行執行的,並且在所有執行檔完成之前不會繼續執行操作。