`at` 和 `cron` 作业的输出去了哪里?

`at` 和 `cron` 作业的输出去了哪里?

如果没有屏幕可显示,标准输出at和任务会去哪里?cron

它没有出现在作业启动的目录中,也没有出现在我的主目录中。

鉴于我不知道如何调试或跟踪后台作业,我如何才能真正弄清楚这一点?

答案1

从 cron 手册页:

执行命令时,任何输出都会邮寄给 crontab 的所有者(或者发送给 crontab 中 MAILTO 环境变量中指定的用户,如果存在的话)。运行这些进程的 cron 子副本的名称强制为大写,如 syslog 和 ps 输出中所示。

所以你应该检查你/root 的邮件或系统日志(例如/var/log/syslog)。

答案2

对于长时间运行的进程,有时在收到电子邮件之前了解输出是什么很有用,我使用以下方法:

  1. 用于ps查找正在运行的程序的进程 ID(PID 如下);
  2. 用于lsof查找输出正在写入的文件:

    lsof -p PID
    

在输出中,查找列标题下的1u和行。2uFD

这些行将告诉您进程输出在通过邮件发送之前将进入哪些临时文件。通常,对于at,该文件位于 下/var/spool/cron/atjobs/。最后,显示该文件,您将找到进程的(当前)输出。

答案3

@kapad,@janaka:现在已经回答了如何在 Linux 上访问已删除的打开文件(正在运行的 crontab 任务的输出)?

所以在这种情况下,你会做一些类似的事情

tail /proc/[the-pid]/fd/1

相关内容