Назад | Перейти на главную страницу

Запуск скрипта Python при загрузке от имени конкретного пользователя

Я хочу запустить скрипт python при загрузке от имени конкретного пользователя.

Сценарий является сервером (прослушивает сокет, обслуживает запросы и т. Д.) И должен запускаться в фоновом режиме, при этом любой вывод предпочтительно направляется в файл журнала.

Мой текущий подход - добавить запись в конце rc.local следующим образом:

su -l usr -c 'script.py arg1 arg2 &> logfile.log &'

Проблема: в сценарии у меня есть несколько операторов печати в сценарии. Они никогда не отображаются в файле журнала. я пробовал

su -l usr -c 'script.py arg1 arg2 &> logfile.log &'

su -l usr -c 'script.py arg arg &> logfile.log &' &> secondLogfile.log &

su -l usr -c 'script.py arg arg &> logfile.log &'

su usr -c 'script.py arg arg &> logfile.log &'

У меня такое чувство, что я упускаю что-то базовое. Может, я делаю это совершенно неправильно.

Система - Fedora 15, скрипт - Python3 и отлично работает из командной строки от имени пользователя. У пользователя есть права на запись в папку, в которую я хочу перенаправить вывод. (Исключил сделав папку 777).

Я попытался запустить скрипт python как службу Systemd, но у меня возникли проблемы с тем, что мой скрипт мог захватить сокет для прослушивания. (выдает ошибку ОС об использовании сокета, если я включил службу systemd при загрузке, тогда как если я запустил systemctl start script.service после загрузки, все работало нормально).

Как я могу запустить скрипт Python от имени пользователя при загрузке, который захватывает сокет?

Строка @Reboot прекрасно работала в crontab. Ответ Freetx не сработал для меня (я пробовал что-то в точности подобное и без кубиков :-(

Это работает для меня:

su -l usr -c "python script.py arg1 arg2> logfile.txt &"

Я считаю, что предыдущий & преждевременно выталкивает "python script.py" в фоновый режим.