Systemd
systemd 服務在啟動後最終處於“非活動(死)”狀態
我已將我的服務添加到systemd(我在pi3上執行它),它看起來像這樣:
[Unit] Description=Oral-B BLE scanner service Wants=network-online.target After=network-online.target StartLimitBurst=10 StartLimitIntervalSec=10 Requires=bluetooth.target [Service] Type=simple WorkingDirectory=/home/pi/scripts ExecStart=/home/pi/scripts/scanOralB.py Restart=always RestartSec=10 [Install] WantedBy=network-online.target
我在/lib/systemd/system中添加了指向上述文件的符號連結。我也啟用了該服務。只是為了確保我檢查過。
pi@raspberrypi:~ $ systemctl is-enabled scanOralB.service enabled
如果我重新啟動並檢查狀態,它看起來像這樣:
pi@raspberrypi:~ $ sudo systemctl status scanOralB.service * scanOralB.service - Oral-B BLE scanner service Loaded: loaded (/home/pi/scripts/scanOralB.service; enabled; vendor preset: enabled) Active: inactive (dead)
如果我手動啟動服務,它工作得很好。有人可以解釋為什麼啟動後服務沒有啟動嗎?我也沒有從journalctl得到額外的輸出。
它沒有被啟動,因為任何啟動的東西都不需要它。
[安裝] WantedBy=network-online.target
我在/lib/systemd/system 中添加了指向上述文件的符號連結。
幾乎所有這些都是錯誤的。
- 單元文件應放在.
/etc/systemd/system
符號連結由 systemd 特殊解釋,並且沒有傳統的文件系統語義。並且/lib/systemd/system
不是來自包的手寫單元文件的地方。- 單元文件應該是實際從引導程序開始的東西所需要的。
network-online.target
通常不會。multi-user.target
是通常的選擇。graphical.target
是另一個。