私はcronジョブを持っており、その出力はファイルにリダイレクトされます。cronジョブ出力をstdoutにリダイレクトする方法
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log
以下いずれかが標準出力に出力をrediectために私を助けることができるように見えますか?
私はcronジョブを持っており、その出力はファイルにリダイレクトされます。cronジョブ出力をstdoutにリダイレクトする方法
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log
以下いずれかが標準出力に出力をrediectために私を助けることができるように見えますか?
いずれの端末にもtty
と入力してください。特定の端末ウィンドウのデバイスファイルは/dev/pts/1
のようになります。このファイルにcronジョブを再作成します。 cleanup.sh > /dev/pts/1
あなたの現在のシェルをログアウトまたは終了すると、そのttyは無効になります(閉じられ、おそらく後で再利用されます)。 –
実行cat /home/darkknight/cleanup.log
出力がSTDOUTになります。 あなたが出力として期待するものを見ることができない場合は、多分あなたは、次のようにcronを変更する必要があります
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log 2>&1
をcleanup.sh
がSTDERRに書き込んものを手に入れます。
あなたは、昨日の出力を失いたく、以下のように変更しない場合:
0 9 * * * /bin/sh /bin/cleanup.sh >> /home/darkknight/cleanup.log 2>&1
それとも、単に/bin/sh /bin/cleanup.sh
を実行して、あなたの端末にSTDOUTとSTDERRの両方を取得します。
実行中のプロセスにはPIDがあり、そのfd(ファイル記述子)は/proc/<PID>/fd
にマッピングされています。そして実行中のcronプロセスのPIDを/var/run/crond.pid
に見つけることができます。
cronログをstdoutに送るには、cronによって開始されたプロセスのfd番号1にログを書き込むことができます。
0 9 * * * /bin/sh /bin/cleanup.sh > /proc/$(cat /var/run/crond.pid)/fd/1 2>&1
これはどのように便利ですか?私のシステムでは、例えば、 '/ usr/bin/cron'プロセスのstdoutとstderrがソケットに向けられています。 –
@KeithThompson私のシナリオでは、cronサービスを実行しているドッカーコンテナを使用しています(フォアグラウンドでcronを実行する 'cron -f'を使用します)。また、監視と分析のログを収集したいからです。 12ファクタappによると、 ''イベントストリームとしてのログを扱う 'ように、私はcronログをstdoutにリダイレクトします。 – gaga5lala
実際に動作しますか?それらのソケットに書き込まれたデータにアクセスできますか? –
の可能性のある重複した[スクリプトの完全な出力をリダイレクトする方法](http://stackoverflow.com/questions/1887618/how-to-redirect-complete-output-of-a-script) – Bhavesh
HTTP ://unix.stackexchange.com/questions/52330/how-to-redirect-output-to-a-file-from-within-cron – Bhavesh
'cron'はシェルのバックグラウンドで実行されているので、' stdout 「出力をリダイレクトしたいですか? –