J'essaie d'écrire une init
configuration qui redirigera la sortie de mon démon vers deux fichiers (pour stdout et stderr). Le problème est que cela ne fonctionne pas. Je lis ça maintenant.
J'ai donc fait ce script shell pour tester cette approche. Et ça ne marche pas:
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
Mais si vous démarrez cela sans envelopper le démon dans un shell séparé, cela fonctionne comme prévu (juste sans les redirections stderr / stdout):
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON -- ${DAEMON_ARGS}
La question est: pourquoi le premier script ne fonctionne pas? Le système est Debian Lenny, la start-stop-daemon
version est 1.14.29
start-stop-daemon
les nœuds ?start-stop-daemon
.Votre ligne dans le script est:
Donc, vous dites essentiellement à exec d'
$DAEMON
utiliser$NCMD
comme arguments. Essayez de changer$NCMD
pouret voyez si cela fonctionne.
Sinon, vous devrez changer votre logiciel pour rediriger
stdout
etstderr
vers les fichiers (peut-être qu'il a déjà une option de journalisation). Vous pouvez également écrire un script wrapper juste pour faire la redirection, mais c'est un peu laid.la source
Une autre façon de rediriger les flux en utilisant nohup comme:
la source