Я пользую Supervisor для этих целей, помимо Systemd.
Конфиг-юнит
your_config.conf в папку:
- если в Ubuntu, то
/etc/supervisor/conf.d/
- если в Arch Linux, то
/etc/supervisord/conf.d/
такого содержания:
; supervisor config file
[program:01-HTTPAceProxy]
user = user # - Если программа лежит в папке Пользователя
command = bash -c "sleep 5 && /usr/bin/python3 /opt/your_py_programm/your_py_programm.py"
или
command = bash -c "sleep 5 && /home/user/venv/bin/python3 /home/user/your_py_programm/your_py_programm.py" # - Если программа лежит в папке Пользователя
stdout_logfile_maxbytes = 50MB
stdout_logfile = /var/log/your_config.log
stderr_logfile = /var/log/your_config.log
startsecs = 10
priority = 1
stopasgroup = true
autostart = true
autorestart = true
Потом выполнить:
sudo supervisorctl reread
sudo supervisorctl update
sudo systemctl restart supervisor.service # - для Ubuntu
sudo systemctl restart supervisord.service # - для Arch Linux
Состояние смотреть в веб-морде:
http://localhost:9001/