Estou tentando escrever a init
configuração que redirecionará a saída do meu daemon para dois arquivos (para stdout e stderr). O problema é que não está funcionando. Estou lendo isso agora.
Então, eu fiz esse script de shell para testar essa abordagem. E isso não 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
Mas se você iniciar isso sem envolver o daemon em um shell separado, ele funcionará conforme o esperado (apenas sem redirecionamentos stderr / stdout):
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON -- ${DAEMON_ARGS}
A questão é: por que o primeiro script não funciona? O sistema é o Debian Lenny, a start-stop-daemon
versão é 1.14.29
start-stop-daemon
?start-stop-daemon
.Sua linha no script é:
Então você está basicamente dizendo ao exec
$DAEMON
usando$NCMD
como args. Tente mudar$NCMD
parae veja se funciona.
Caso contrário, você terá que alterar seu software para redirecionar
stdout
estderr
para arquivos (talvez ele já tenha uma opção de log). Você também pode escrever um script de wrapper apenas para fazer o redirecionamento, mas isso é um pouco feio.fonte
Outra maneira de redirecionar fluxos usando nohup como:
fonte