Я пытаюсь написать init
конфигурацию, которая перенаправит вывод моего демона в два файла (для stdout и stderr). Проблема в том, что это не работает. Я читаю это прямо сейчас.
Итак, я сделал этот скрипт для проверки этого подхода. И это не работает:
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Seed kurokikaze starter"
#NAME=node
DAEMON="/etc/node-version/0.1.99/bin/node"
DAEMON_ARGS="/etc/seed/kurokikaze/server.js"
DAEMON_DIR="/etc/seed/kurokikaze"
APPLOG_FILE="/var/log/seed/kurokikaze"
ERRLOG_FILE="/var/log/seed/kurokikaze-err"
PIDFILE="/var/run/seeds/kurokikaze.pid"
SCRIPTNAME="/etc/seed-init/kurokikaze"
NCMD="exec $DAEMON $DAEMON_ARGS 1>>$APPLOG_FILE 2>>$ERRLOG_FILE"
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON --startas /bin/sh -- $NCMD
Но если вы запустите это без упаковки демона в отдельную оболочку, он будет работать как задумано (только без перенаправлений stderr / stdout):
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON -- ${DAEMON_ARGS}
Вопрос в том, почему первый скрипт не работает? Система Debian Lenny, start-stop-daemon
версия 1.14.29
start-stop-daemon
?start-stop-daemon
.Ваша строка в сценарии:
Итак, вы в основном говорите, чтобы exec
$DAEMON
использовал в$NCMD
качестве аргументов. Попробуйте изменить$NCMD
наи посмотреть, если это работает.
Если нет, вам придется изменить программное обеспечение для перенаправления
stdout
иstderr
файлов (возможно, оно уже имеет опцию регистрации). Вы также можете написать скрипт- обертку просто для перенаправления, но это немного на уродливой стороне.источник
Еще один способ перенаправления потоков с использованием nohup :
источник