Saya mencoba menulis init
config yang akan mengarahkan output daemon saya ke dua file (untuk stdout dan stderr). Masalahnya, itu tidak berfungsi. Saya membaca ini sekarang.
Jadi, saya sudah melakukan skrip shell ini untuk menguji pendekatan ini. Dan itu tidak berfungsi:
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
Tetapi jika Anda memulai ini tanpa membungkus daemon di shell terpisah, itu berfungsi seperti yang dimaksudkan (hanya tanpa pengalihan stderr / stdout):
start-stop-daemon -Sbmv --pidfile $PIDFILE --chdir ${DAEMON_DIR} --exec $DAEMON -- ${DAEMON_ARGS}
Pertanyaannya adalah: mengapa skrip pertama tidak berfungsi? Sistem adalah Debian Lenny, start-stop-daemon
versi 1.14.29
start-stop-daemon
?start-stop-daemon
.Baris Anda dalam skrip adalah:
Jadi pada dasarnya Anda mengatakan kepada exec
$DAEMON
menggunakan$NCMD
sebagai args. Coba ubah$NCMD
kedan lihat apakah itu berfungsi.
Jika tidak, Anda harus mengubah perangkat lunak Anda untuk mengarahkan
stdout
danstderr
ke file (mungkin itu sudah memiliki opsi logging). Anda juga dapat menulis skrip pembungkus hanya untuk melakukan pengalihan tetapi itu sedikit di sisi yang jelek.sumber
Cara lain untuk itu streaming redirection menggunakan nohup seperti:
sumber