Cronジョブがあり、その出力はファイルにリダイレクトされます。次のようになります
0 9 * * * /bin/sh /bin/cleanup.sh > /home/darkknight/cleanup.log
出力をstdoutに再編集するのを手伝ってくれる人はいますか?
任意の端末でtty
と入力すると、/dev/pts/1
などの特定のターミナルウィンドウのデバイスファイルが取得されます。 cronジョブをこのファイルにcleanup.sh > /dev/pts/1
として再適用します
実行中のプロセスにはPIDがあり、そのfd(ファイル記述子)は/proc/<PID>/fd
にマッピングされています。そして、/var/run/crond.pid
で実行中のcronプロセスのPIDを見つけることができます。
Cronログをstdoutに送信するには、cronによって開始されたプロセスのfd番号1にログを書き込むことができます。
0 9 * * * /bin/sh /bin/cleanup.sh > /proc/$(cat /var/run/crond.pid)/fd/1 2>&1
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の両方が取得されます。