Cron工作:保持最后20行

时间:2009-08-19 13:54:47

标签: cron limit

我有一个进程在运行时将数百万行转储到控制台。我想在cronjob中运行它,但为了避免发送多MB邮件,我想在成功(退出== 0)的情况下将输出限制为0行并且在出现错误的情况下(退出) != 0)到最后20行。

任何想法都可以轻松实现这一目标吗?也许是几行perl或智能使用标准工具?

2 个答案:

答案 0 :(得分:2)

tail command是否适合您要做的事情?也许如果控制台输出也可以在文件中使用(可能使用tee)?

答案 1 :(得分:2)

直接在crontab或包装器脚本中将输出管道输出到tail。 e.g。

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