Служба systemd не запускается тихо. Как отлаживать? - PullRequest
0 голосов
/ 20 марта 2020

Я написал программу (называемую виски), которую теперь хочу запустить при загрузке машины (Raspberry Pi, с помощью которой я создаю автономную лодку). Итак, я создал файл /lib/systemd/system/whisky.service:

[Unit]
Description=Whisky Boat Program
After=network.target
StartLimitIntervalSec=0

[Service]
ExecStart=/home/pi/whisky/run
KillMode=process
IgnoreSIGPIPE=true
Restart=always
RestartSec=3
User=root
Type=simple

[Install]
WantedBy=multi-user.target

Я проверил, правильно ли отформатирован файл для systemd, используя systemd-analyze verify whisky.service.

Когда я сейчас запускаю sudo systemctl start whisky, я не получаю вывод ( не предлагая ошибок).

sudo systemctl status whisky дает мне следующий вывод:

* whisky.service - Whisky Boat Program
   Loaded: loaded (/lib/systemd/system/whisky.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Fri 2020-03-20 15:03:35 CET; 792ms ago
  Process: 8621 ExecStart=/home/pi/whisky/run (code=exited, status=203/EXEC)
 Main PID: 8621 (code=exited, status=203/EXEC)

Mar 20 15:03:35 raspberrypi systemd[1]: whisky.service: Unit entered failed state.
Mar 20 15:03:35 raspberrypi systemd[1]: whisky.service: Failed with result 'exit-code'.

Файл /home/pi/whisky/run на самом деле является bash сценарием, который, в свою очередь, запускает программу. Чтобы проверить, запускает ли systemd этот сценарий bash, я добавил в него первую строку: mkdir /home/pi/RUNNING_FROM_SYSTEMD. Каталог RUNNING_FROM_SYSTEMD не создан, поэтому, похоже, systemd даже не пытается запустить файл /home/pi/whisky/run.

Кто-нибудь знает, что я здесь не так делаю?

1 Ответ

0 голосов
/ 21 марта 2020

Проверьте скрипт запуска. Там должен быть Шебанг. Если нет, добавьте #!/bin/bash вверху скрипта и укажите абсолютный путь, например ExecStart=/bin/bash /home/pi/whisky/run

. Сообщение об ошибке (код = выход, статус = 203 / EXE C) часто появляется, когда скрипт сам по себе или его интерпретатор не может быть выполнен.

Возможны и другие возможные причины:

  • неверный путь к сценарию
  • сценарий не выполняется
  • нет шебанга ( первая строка) или неверный путь в shebang
  • во внутренних файлах вашего скрипта могут отсутствовать права доступа.
...