0

実行中に何百万もの行をコンソールにダンプするプロセスがあります。これを cron ジョブで実行したいのですが、数 MB のメールを送信しないようにするために、成功 (exit == 0) の場合は出力を 0 行に制限し、エラー (exit != 0) 最後の 20 行まで。

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

4

2 に答える 2

2

tail コマンドは、あなたがしようとしていることに適していますか? たぶん、コンソール出力もファイルで利用できる場合(おそらくteeを使用)?

于 2009-08-19T14:02:40.960 に答える
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 
于 2009-08-19T14:11:19.093 に答える