Я хочу запустить скрипт 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" в фоновый режим.