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

Запуск скрипта 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 от имени пользователя при загрузке, который захватывает сокет?

решение1

Мне это подходит:

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

Я считаю, что предыдущая версия & преждевременно отодвигает «python script.py» на задний план.

решение2

Строка @Reboot сработала как по волшебству в crontab. Ответ Freetx у меня не сработал (я пробовал что-то в точности похожее, но ничего не вышло :-(

Связанный контент