2009-08-19 11 views
0

実行中に何百万行もの行をコンソールにダンプするプロセスがあります。私はcronjobでこれを実行したいと思いますが、マルチMBメールの送信を避けるために、私は成功(exit == 0)の場合の出力を0行に制限したいと思います。 != 0)を最後の20行に追加します。Cronジョブ:最後の20行を維持する

少しの努力でこれを達成するためのアイデアはありますか?たぶん、数行のperlや標準ツールのスマートな使用ですか?

+1

tail -n 20はどうですか? –

+0

CRONではスクリプトを呼びます。スクリプトでは、プロセスのEXITステータスを表示するロジックを開発する必要があります。それがエラーの場合は、メールのみtail -20 * log。 – Guru

答えて

2

crontabに直接出力するか、またはラッパースクリプトでパイプを出力するだけです。例えば

10 * * * * myprogram 2>&1 | tail -20 

これは、常に最後の20行を出力するかどうかを示します。 出力が成功しないようにしたい場合やエラーの場合は、cronから呼び出すラッパースクリプトを作成することができます。

#!/bin/sh 
myprogram 2>&1 | tail -20 >/tmp/myprogram.log 
if [ $? != 0 ] ; then 
    echo "Failed!" 
    cat /tmp/myprogram.log 
fi 
rm /tmp/myprogram.log 
+0

あまりにも暑いです。もう思うことはできない。もちろん、シンプルなテールができます:) –

2

tail commandは、あなたがしようとしていることに適していますか?おそらく、コンソール出力がファイルでも利用可能な場合は(tee、多分)?