Ich versuche, eine init
Konfiguration zu schreiben , die die Ausgabe meines Daemons in zwei Dateien umleitet (für stdout und stderr). Das Problem ist, es funktioniert nicht. Ich lese das gerade.
Also habe ich dieses Shell-Skript erstellt, um diesen Ansatz zu testen. Und es funktioniert nicht:
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
Wenn Sie dies jedoch starten, ohne den Daemon in eine separate Shell zu packen, funktioniert es wie beabsichtigt (nur ohne stderr / stdout-Weiterleitungen):
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON -- ${DAEMON_ARGS}
Die Frage ist: Warum funktioniert das erste Skript nicht? System ist Debian Lenny, start-stop-daemon
Version ist 1.14.29
start-stop-daemon
?start-stop-daemon
.Ihre Zeile im Skript lautet:
Also sagen Sie grundsätzlich exec
$DAEMON
verwenden$NCMD
als args. Versuchen Sie , ändern$NCMD
zuund sehen, ob es funktioniert.
Wenn nicht, müssen Sie Ihre Software ändern, um sie umzuleiten
stdout
undstderr
in Dateien umzuwandeln (möglicherweise verfügt sie bereits über eine Protokollierungsoption). Sie können auch ein Wrapper- Skript schreiben , um die Umleitung durchzuführen, aber das ist etwas hässlich.quelle
Ein anderer Weg für diese Streams-Umleitung mit nohup wie:
quelle