Конфигурация Systemd для запуска скрипта как сервиса - PullRequest
0 голосов
/ 27 апреля 2018

Если я запускаю /home/pi/update.sh все работает нормально; Если я запустю его через службу systemd, скрипт не будет выполнен.

Содержание скрипта:

/home/pi/update.sh

#!/bin/sh
script='/opt/server/htdocs/due.py'
/usr/bin/python $script &

Здесь вы находитесь в конфигурации Systemd: есть ли ошибка в приведенном ниже коде?

/lib/systemd/system/httpdevice.service
/etc/systemd/system/multi-user.target.wants/httpdevice.service

    [Unit]
    Description=httpdevice-service

    [Service]
    Type=simple
    User=pi
    ExecStart=/home/pi/update.sh

    [Install]
    WantedBy=multi-user.target

Здесь статус:

sudo systemctl status httpdevice.service

● httpdevice.service - httpdevice
   Loaded: loaded (/lib/systemd/system/httpdevice.service; enabled)
   Active: inactive (dead) since Fri 2018-04-27 18:01:52 CEST; 17min ago
  Process: 402 ExecStart=/home/pi/update.sh (code=exited, status=0/SUCCESS)
 Main PID: 402 (code=exited, status=0/SUCCESS)

Apr 27 18:01:51 raspberrypi systemd[1]: Starting httpdevice...
Apr 27 18:01:51 raspberrypi systemd[1]: Started httpdevice.

1 Ответ

0 голосов
/ 15 июня 2018

Проблема здесь Type=simple. Ваш сервис определенно запустился, а затем вышел. Тем не менее, вы, вероятно, введены в заблуждение дочерним процессом Python. Дочерние процессы не являются частью "простого" сервиса.

Может быть проще иметь ExecStart=/opt/bin/python opt/server/htdocs/due.py и пропустить весь сценарий.

...