cron 将实时 stderr 日志存储在哪里?

cron 将实时 stderr 日志存储在哪里?

我配置了一个 cron 任务来运行如下命令

some-command 2>&1 >/dev/null | tee -a /tmp/some-command.STDERR.$(date +\%Y-\%m-\%d.\%H.\%M)

我还有一个 tmpreaper cron 作业,用于整理旧日志。时不时地,某个进程会失控,很快耗尽所有磁盘空间(我正在调试这个问题,但这不是这个问题的重点)。当这种情况发生时,似乎“tee”会永久卡住,并出现“设备上没有剩余空间”错误;即使 tmpreaper 最终介入以腾出空间,该进程也永远不会恢复。

启动 stderr 的唯一目的是能够实时检查进程正在做什么。但是,在我(不可避免地)终止进程后,该输出最终也会出现在 cron 发送的电子邮件中。按理说,cron 在其他分区上有自己的文件,该文件正在代表我收集 stderr 日志。但我不知道该文件在哪里。有什么提示吗?

答案1

Cron 不会将作业的输出发送到临时文件。相反,一旦看到作业的任何输出,它就会调用 mail 命令并将输出直接复制到 mail 的输入。通过检查 Vixie cron 的源代码确认了这一点,但其他人可能会做同样的事情。

相关内容