GNU/Linux >> Linux の 問題 >  >> Linux

DaemontoolsMultilogはログラインの時間情報を失います。それを修正する方法は?

私はdaemontoolsを使用してプロセスとその出力ログを監視しています。マルチログを使用してログをディスクに書き込みます。

ログの実行スクリプトは次のとおりです。

#!/bin/bash
PATH=/usr/local/bin:/usr/bin:/bin
cd /usr/local/script_dir
exec multilog t s16777215 n50 '!tai64nlocal' '!/bin/gzip' /var/log/script_log

監視されているプロセスは、出力をstderrに書き込みます。したがって、プロセスの実行スクリプトには、stderrをstdoutにリダイレクトする次の行があります。

exec 2>&1
exec ./my_process

ただし、ログファイルを調整している間、数百行の出力がバーストで表示され(監視対象のプロセスは数秒ごとに出力を書き込みます)、ログ行のタイムスタンプはマイクロ秒未満のレベルで異なります。プロセスの性質から、ログライン間の時間差はそれほど小さくないことがわかります。明らかに、マルチログは出力をバッファリングし、ファイルに書き込む準備ができたときにタイムスタンプを追加しています。タイムスタンプには、行が出力された時刻をより厳密に反映させたいと思います。これはどのように修正できますか?

承認された回答:

監視対象のスクリプトはPythonスクリプトでした。すべての標準ストリームをバッファリングしないようにするには、-uを渡すだけでよいことがわかりました。 通訳へのオプション。これで私の場合の問題は解決しました。


Linux
  1. 実行中のプロセスの出力リダイレクトを変更するにはどうすればよいですか?

  2. Crontab ログ:私の Cron スクリプトの出力をログに記録する方法

  3. すでに実行中のプロセスの出力をリダイレクトする方法

  1. Python - Supervisor で標準出力をログに記録する方法 -

  2. プロセスがps出力で異なる名前を持っているように見えるのはなぜですか?

  3. ps出力をプロセス開始時間でソートする方法は?

  1. パイプラインで`ping`からの出力の各ラインをすぐに処理しますか?

  2. Hibernateを修正する方法は?

  3. Linux で出力行ごとに 1 つのファイル名をリストするにはどうすればよいですか?