如果没有屏幕可显示,标准输出at
和任务会去哪里?cron
它没有出现在作业启动的目录中,也没有出现在我的主目录中。
鉴于我不知道如何调试或跟踪后台作业,我如何才能真正弄清楚这一点?
答案1
从 cron 手册页:
执行命令时,任何输出都会邮寄给 crontab 的所有者(或者发送给 crontab 中 MAILTO 环境变量中指定的用户,如果存在的话)。运行这些进程的 cron 子副本的名称强制为大写,如 syslog 和 ps 输出中所示。
所以你应该检查你/root 的邮件或系统日志(例如/var/log/syslog)。
答案2
对于长时间运行的进程,有时在收到电子邮件之前了解输出是什么很有用,我使用以下方法:
- 用于
ps
查找正在运行的程序的进程 ID(PID
如下); 用于
lsof
查找输出正在写入的文件:lsof -p PID
在输出中,查找列标题下的1u
和行。2u
FD
这些行将告诉您进程输出在通过邮件发送之前将进入哪些临时文件。通常,对于at
,该文件位于 下/var/spool/cron/atjobs/
。最后,显示该文件,您将找到进程的(当前)输出。
答案3
@kapad,@janaka:现在已经回答了如何在 Linux 上访问已删除的打开文件(正在运行的 crontab 任务的输出)?
所以在这种情况下,你会做一些类似的事情
” tail /proc/[the-pid]/fd/1
“