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"