Я написал системный сервис для запуска Groundcontrol на моем Raspberry Pi.
[Unit]
Description=Groundcontrol status monitor
[Service]
ExecStart=/opt/groundcontrol/groundcontrol/start.sh
Type=forking
[Install]
WantedBy=multi-user.target
Я использую сценарий, потому что groundcontrol не будет работать должным образом, если он не запущен из каталога bin. Вот сценарий:
cd /opt/groundcontrol/groundcontrol
./groundcontrol &
Это прекрасно работает, когда я запускаю его вручную, но когда я запускаю свой Pi и запускаю systemctl
он говорит, что это не удалось. systemctl status groundcontrol.service
печатает
groundcontrol.service - Groundcontrol status monitor
Loaded: loaded (/etc/systemd/system/groundcontrol.service; enabled)
Active: failed (Result: exit-code) since Wed 1969-12-31 17:00:14 MST; 43 years 11 months ago
Process: 111 ExecStart=/opt/groundcontrol/groundcontrol/start.sh (code=exited, status=0/SUCCESS)
Main PID: 116 (code=exited, status=2)
Dec 31 17:00:11 waldo systemd[1]: Starting Groundcontrol status monitor...
Dec 31 17:00:12 waldo systemd[1]: Started Groundcontrol status monitor.
Dec 31 17:00:14 waldo systemd[1]: groundcontrol.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Dec 31 17:00:14 waldo systemd[1]: Unit groundcontrol.service entered failed state.
Когда я запускаю его вручную, статус
groundcontrol.service - Groundcontrol status monitor
Loaded: loaded (/etc/systemd/system/groundcontrol.service; enabled)
Active: active (running) since Thu 2013-12-26 15:38:02 MST; 1s ago
Process: 296 ExecStart=/opt/groundcontrol/groundcontrol/start.sh (code=exited, status=0/SUCCESS)
Main PID: 297 (groundcontrol)
CGroup: /system.slice/groundcontrol.service
`-297 ./groundcontrol
Dec 26 15:38:02 waldo systemd[1]: Started Groundcontrol status monitor.
Был сценарий инициализации System V, предоставленный Groundcontrol, но я не знал, как использовать его с systemd - возможно ли это, и будет ли он работать лучше, чем мой сервис? Если нет, как я могу исправить эту услугу? Благодарю.