4

これについてはすでにいくつかの質問がありますが、どれもうまくいかないようです。現在ダウンしている本番システムがあり、デーモンからstderr出力をすばやく取得してデバッグできるようにする必要があります。

(init.dスクリプトで)呼び出されたポイントから出力をリダイレクトできると思っていましたが、非常に困難であることがわかりました。

 start-stop-daemon -d $DDIR -b -m --start --quiet -pidfile $PIDFILE --exec $DAEMON -- \
                $DAEMON_ARGS > /var/log/daemon.log 2>&1 \
                || return 2

これは動作しません。実行可能ファイルを呼び出して出力をリダイレクトするシェルスクリプトを実行しようとしましたが、ログファイルは空のままでした(プロセスが情報を出力していることはわかっています)。

どんな助けでも大歓迎です。

4

4 に答える 4

3

start-stop-daemon >= バージョン 1.16.5 を使用している場合は、それを呼び出すだけで、開始さ--no-closeれたプロセスの出力をリダイレクトできます。

からman start-stop-daemon:

-C, --クローズしない

          Do not close any file descriptor when forcing the daemon into
          the background (since version 1.16.5).  Used for debugging
          purposes to see the process output, or to redirect file
          descriptors to log the process output.  Only relevant when
          using --background.
于 2016-11-24T14:13:53.357 に答える
2

私が覚えている限り、これは不可能です。通常、デーモンプロセスからデータを取得する必要がある場合は、事前にログに記録するか、ネットワークソケットまたは名前付きパイプまたはその他のプロセス間通信メカニズムを介してプログラムに接続するモニタープログラムを作成します。

于 2012-10-08T19:10:51.097 に答える
0

これが機能する可能性のあるソリューションです(ここに示したソリューションに基づいています)。

init.dスクリプトの最初(およびヘッダーの後に)に、次を追加します。

exec > >(tee --append /var/log/daemon.log)

#You may also choose to log to /var/log/messages using this:
#exec > >(logger -t MY_DAEMON_NAME)

#And redirect errors to the same file with this:
exec 2>&1

これにより、出力を含め、スクリプト中に呼び出されたすべてのログが記録されますstart-stop-daemon

于 2013-03-07T12:23:16.560 に答える