Estoy tratando de escribir una init
configuración que redirija la salida de mi daemon a dos archivos (para stdout y stderr). El problema es que no está funcionando. Estoy leyendo esto ahora mismo.
Entonces, hice este script de shell para probar este enfoque. Y no funciona:
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
Pero si comienzas esto sin envolver el demonio en un shell separado, funciona según lo previsto (solo sin redireccionamientos stderr / stdout):
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON -- ${DAEMON_ARGS}
La pregunta es: ¿por qué el primer script no funciona? El sistema es Debian Lenny, la start-stop-daemon
versión es 1.14.29
start-stop-daemon
's?start-stop-daemon
.Su línea en el guión es:
Así que básicamente le estás diciendo a exec que
$DAEMON
use$NCMD
como args. Intenta cambiar$NCMD
ay ver si funciona.
Si no, tendrá que cambiar su software para redirigir
stdout
ystderr
a los archivos (tal vez ya tenga una opción de registro). También puede escribir un script de contenedor solo para hacer la redirección, pero eso es un poco feo.fuente
Otra forma de redireccionar las transmisiones usando nohup como:
fuente