Runlevel
啟用單元失敗:文件 log.service:沒有這樣的文件或目錄
我想在關機或關機前記錄一些東西。
uname -a Linux xxx 4.9.0-4-amd64 #1 SMP Debian 4.9.51-1 (2017-09-28) x86_64 GNU/Linux systemctl get-default graphical.target runlevel N 5
編輯我的腳本。
sudo vim /etc/systemd/system/graphical.target.wants/log.service [Unit] Description=Run command at shutdown Before=shutdown.target reboot.target [Service] Type=oneshot RemainAfterExit=true ExecStop=/bin/bash /home/log.sh
啟用它。
sudo systemctl enable log.service Failed to enable unit: File log.service: No such file or directory
如何解決?以下設置有什麼問題?
sudo cat /etc/systemd/system/log.service [Unit] Description=Run command at shutdown After=shutdown.target reboot.target [Service] Type=oneshot RemainAfterExit=true ExecStop=/bin/bash /home/log.sh [Install] WantedBy=graphical.target
sudo systemctl enable log.service
毫無問題地啟用它。為什麼沒有日誌資訊,
/home/log.sh
無法執行?
您不應該在目錄中創建單元,該
graphical.target.wants
目錄用於符號連結。相反,直接在/etc/systemd/system
目錄中創建它。此外,您希望有一個
[Install]
部分,描述systemctl enable
使用該命令時將其安裝在何處。(在您的情況下,您可以使用graphical.target
, 雖然multi-user.target
是一個更常見的選擇,並且它是 的依賴項graphical.target
,因此它將在引導期間被拉出。)所以在下面創建
/etc/systemd/system/log.service
:[Unit] Description=... [Service] ... ExecStop=/bin/bash /home/log.sh [Install] WantedBy=multi-user.target
然後啟用它:
$ sudo systemctl enable log.service
這應該工作。
您的依賴關係可能不正確。您有,但很可能您需要對需要在停止之前
Before=shutdown.target reboot.target
執行的服務使用After=
依賴項。依賴關係在關閉時以相反的順序工作,因此請在該子句中列出您依賴的那些(例如, ) 。該指令也可能很有趣,因為您需要為 log.sh 安裝文件系統才能執行…local-fs.target``network.target``After=``RequiresMountsFor=