Программа не работает как служба Linux systemctl, но запускается при прямом вызове

У меня есть скрипт (веб-слушатель), который без проблем работает сам по себе:

> /usr/bin/python3 /home/[user]/scripts/CrossPlatform/workflow_trigger.py 

У меня уже есть другой сервис, который хорошо работает. Итак, я скопировал этот файл под новым именем /etc/systemd/system/my_workflow.service:

Description=My Service
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/bin/python3 /home/[user]/scripts/CrossPlatform/workflow_trigger.py

[Install]
WantedBy=multi-user.target

Строка ExecStart - это прямая копия успешно выполненной команды.

Затем я бегу:

systemctl daemon-reload
systemctl start my_service.service 

Он работает без сообщения. К несчастью:

systemctl status my_service.service 

Показывает:

my_service.service - My Service
   Loaded: loaded (/etc/systemd/system/my_service.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Wed 2020-07-01 10:57:35 CDT; 958ms ago
  Process: 2722 ExecStart=/usr/bin/python3 /home/[user]/scripts/CrossPlatform/workflow_trigger.py (code=exited, status=1/FAILURE)
 Main PID: 2722 (code=exited, status=1/FAILURE)

ОС это:

NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"

Что может быть исправлением? Большое спасибо, Богдан


person illan    schedule 01.07.2020    source источник


Ответы (2)


Похоже, это проблема с доступом. Служба была настроена на запуск как User = root при перетаскивании данных (по умолчанию) в папку отдельного пользователя. Исправление пути сохранения в более общий каталог или изменение пользователя на владельца домашней папки устраняет проблему.

person illan    schedule 02.07.2020

Сначала переместите ExecStart сразу после [service] и удалите user = root из служб. Также в сервисах упоминается ExecStop.

Description=My Service
After=network.target
StartLimitIntervalSec=0

[Service]
ExecStart=/usr/bin/python3 /home/[user]/scripts/CrossPlatform/workflow_trigger.py
Type=simple
Restart=always
RestartSec=1

[Install]
WantedBy=multi-user.target
person khushi muhammad    schedule 06.01.2021