我已將我的服務添加到系統(我正在運行它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/系統。我也啟用了該服務。只是為了確定我檢查過。
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)
如果我手動啟動該服務,它就可以正常工作。有人可以解釋為什麼啟動後服務沒有啟動嗎?我沒有得到額外的輸出日誌控制任何一個。
答案1
它沒有被啟動,因為任何啟動的東西都不需要它。
[安裝] WantedBy=網路在線.target我在上面的文件中添加了一個符號鏈接/lib/systemd/系統。
幾乎所有這些都是錯誤的。
- 單元文件應該是放置在
/etc/systemd/system
。符號連結由 systemd 進行特殊解釋,並且不具有傳統的檔案系統語義。並且/lib/systemd/system
不是非來自包的手寫單元文件的位置。 - 該單元檔案應該是在引導程式中實際啟動的東西所需要的。
network-online.target
通常不會。multi-user.target
是通常的選擇。graphical.target
是另一個。