start-stop-демон и python
Я пытаюсь запустить скрипт python с помощью Start-stop-daemon:
sudo /sbin/start-stop-daemon --start --pidfile /home/loop.pid
--user www-data --group www-data -b --make-pidfile --chuid www-data
--exec /usr/bin/python /home/loop.py --verbose
но в моих процессах нет скрипта python. Что я делаю не так?
loop.py:
import time
while True:
print "working..."
time.sleep(3)
2 ответов
я попробовал ваш скрипт и командную строку, и он работает на моей машине. Вы уверены, что ваш скрипт находится по адресу /home/loop.py
?
кроме того, не ожидайте увидеть эти отпечатки, потому что вы задание -b
(фон), поэтому процесс отсоединяется от вашего терминала. Попробуйте запустить его без -b
для целей тестирования, а затем вы можете перенаправить стандартный вывод в файл журнала с помощью :
sudo /sbin/start-stop-daemon --start --pidfile /home/loop.pid \
--user www-data --group www-data -b --make-pidfile --chuid www-data \
--exec /usr/bin/python /home/loop.py --verbose -stdout /var/log/loop.log
а не exec python напрямую, если вы --exec (или --startas) вложенные оболочки, затем вы можете сделать перенаправление там (согласно ответ):
start-stop-daemon --start --quiet --chuid $DAEMONUSER \
--make-pidfile --pidfile $PIDFILE --background \
--startas /bin/bash -- -c "exec $DAEMON $DAEMON_ARGS > /var/log/some.log 2>&1"
это работает для меня и регистрирует мой Python stdout довольно счастливо как только я понял, что выход был буферизован (мой сценарий не очень много пишу)! Затем я нашел в этой статье который использует "stdbuf" для сброса на выход более охотно, чем по умолчанию (а также объясняет это довольно хорошо):
start-stop-daemon --start --background \
--pidfile $PIDFILE --make-pidfile --startas /bin/bash \
-- -c "exec stdbuf -oL -eL $DAEMON $DAEMONARGS > $LOGFILE 2>&1"