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

Mic*_*ant 15 cron output at

鉴于没有可显示的屏幕,标准输出atcron任务的去向在哪里?

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

鉴于我不知道如何调试或跟踪后台作业,我怎么能真正解决这个问题?

Jar*_*nen 13

从 cron 手册页:

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

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


小智 7

对于长时间运行的进程,有时在收到电子邮件之前知道输出是什么很有用,我用它来代替:

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

    lsof -p PID
    
    Run Code Online (Sandbox Code Playgroud)

在输出中,查找列标题下的1u2uFD

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