【问题标题】:Cron job: keep last 20 linesCron 作业:保留最后 20 行
【发布时间】:2009-08-19 22:36:07
【问题描述】:

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

有什么想法可以轻松实现这一目标吗?也许是几行 perl 或标准工具的巧妙使用?

【问题讨论】:

  • 在 CRON 中,您将调用脚本。在脚本中,您可能需要开发一个逻辑来查看进程的 EXIT 状态。如果是错误,则只发送tail -20 *log。

标签: cron limit


【解决方案1】:

直接在 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 

【讨论】:

  • 这里太热了;我不能再想了。当然,一个简单的尾巴就可以了:)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2018-03-22
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    相关资源
    最近更新 更多