Systemd

systemd 服務在啟動後最終處於“非活動(死)”狀態

  • April 11, 2020

我已將我的服務添加到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是另一個。

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