系统管理员工具包: 时间和事件管理
2008-11-11 08:12:32 来源:WEB开发网可以在 crontab 指定语句中使用重定向来将输出信息发送到特定文件或忽略来自不同源的输出。要直接将输出记录到文件中,可以使用以下语句:
1 1 * * * do-something >/var/logs/do-something.log
上述语句会覆盖信息,因此,如果希望保持较长时间的记录,请使用追加:
1 1 * * * do-something >>/var/logs/do-something.log
要忽略输出,请重定向到特殊的 /dev/null 设备。对于标准输出,请尝试使用以下语句:
1 1 * * * do-something >/dev/null
对于标准输出和错误,请尝试使用以下语句:
1 1 * * * do-something >/dev/null 2>&1
如果希望收集按照日期组织的日志,则请将 date 命令和指定日志文件的语句结合使用,例如:
1 1 * * * do-something >/var/logs/something.`date +%Y%m%d`.log
要从 cronjob 中的一系列命令拾取和选择输出,或创建基于内容的自定义电子邮件,请使用包装脚本,以将您希望保存的信息写入到临时文件中,并同时忽略其他输出。可以随后将该文件的内容以电子邮件的方式发送给任何希望的用户。
要创建临时文件,请使用时间和进程 ID 生成唯一的文件名,如下所示:
LOGFILE=/tmp/`datetime +%Y%m%d`.$$.tempfile
do-something >$LOGFILE 2>&1
mailx -s "Results of do-something report" reportees <$LOGFILE
rm -f $LOGFILE
将文件发送到相关人员后,请记住删除该文件。在上面的示例中,使用了 mailx(而不是 mail)来允许设置主题。
结束语
通过将 crontab 和 at 命令结合使用,可以指定任何所需的命令的执行时间或间隔。使用 at 时,可以在给定时间仅运行一次命令或脚本。通过使用 crontab,可以指定执行的时间间隔,这个间隔可以随意指定,可以间隔很长,也可以间隔很短。但应仔细处理,以确保命令在所需的准确时间运行。忽略分和时可能带来问题,或者可能导致您的命令在预期外的时间或时间间隔运行。
在 crontab 不够具体或灵活的时候,可以使用其他一些替代方法,以处理更为复杂的情况,例如在每月的最后一天或特定周的特定天运行命令。
进行计划可节省时间,在细心组织下,还能帮助减少您的工作负担,减少重复工作。
更多精彩
赞助商链接