Estoy tratando de escribir una initconfiguració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-daemonversió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
$DAEMONuse$NCMDcomo args. Intenta cambiar$NCMDay ver si funciona.
Si no, tendrá que cambiar su software para redirigir
stdoutystderra 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