Systemd

systemd:在文件系統以只讀方式掛載後在關機時執行腳本

  • July 27, 2016

在文件系統重新安裝為只讀後,有沒有辦法在關機時執行腳本?

我有一個連接到無線插座的樹莓派,我可以通過發送器和腳本來控制它。在文件系統以只讀方式安裝後,我想在關機時關閉該套接字(關閉樹莓的電源)。

我試過這個:

[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”、“rebo​​ot” " 或 “kexec”,具體取決於所選的操作。此目錄中的所有執行檔都是並行執行的,並且在所有執行檔完成之前不會繼續執行操作。

引用自:https://unix.stackexchange.com/questions/240059