Когда я запускаю приложение python с systemctl, подпроцесс python завершается ошибкой при выполнении стандартных команд оболочки, таких как tail, awk и т. Д.
Пример кода:
import subprocess
process = subprocess.Popen(['awk'], stdout=subprocess.PIPE)
, сохраните выше изапустите его через python app.py - без проблем.
Запустите эту же команду, используя systemctl, и вы получите следующую ошибку:
FileNotFoundError: [Errno 2] No such file or directory: 'awk': 'awk'
То же самое относится ко всем другим командам, которые я знаюдля факта, который я установил - например, tail, sed и т. д.
Я пробовал разные способы запуска подпроцесса, такие как subprocess.run()
, subprocess.call()
.Я также пытаюсь использовать shell=True
и даже аргумент executable='/bin/bash
.
Что касается systemctl, я пытался работать локально, используя systemctl start service_name --user
и различные комбинации конфигурации, такие как изменение типа процесса, запусккак root, другой пользователь и группа.
Вот пример конфигурации:
[Unit]
Description={{ project_name }} Service
After=network.target
[Service]
User={{ user }}
Group={{ user_group }}
Restart=always
RestartSec=1s
WorkingDirectory=/home/{{ user }}/{{ project_folder }}
ExecStart=/home/{{ user }}/{{ project_folder }}/virtualenv/bin/python start.py
[Install]
WantedBy=multi-user.target