我想验证我的 cron 作业是否正在执行以及何时执行。我相信我的sudo crontab -e工作有日志,但在哪里?
我搜索了谷歌并找到了要查看的建议/var/log(在其中我没有看到名称中带有“cron”的任何内容)并编辑/etc/syslog.conf我也没有的文件。
通常,crontab脚本不会按计划或按预期执行。有很多原因:
该社区维基旨在汇总crontab脚本未按预期执行的主要原因。在单独的答案中写下每个原因。
请在每个答案中包含一个原因 - 未执行原因的详细信息 - 并针对该原因进行修复。
请只编写特定于 cron 的问题,例如在 shell 中按预期执行但被 cron 错误执行的命令。
系统管理员接收系统通知的 Ubuntu 方式是什么,通常以电子邮件的形式发送到 root 帐户?
此类通知的示例是 cron 作业的输出或降级 RAID 通知。
在几乎默认的 Ubuntu 10.04 安装中,除了存放在/var/mail/root. 用户应该如何 1. 发现它和 2. 在它到达时阅读它?
我观察到,安装程序添加root: myusername到/etc/aliases. 因此,当时安装系统的用户如果阅读了本地邮件。因此,似乎在此过程中的某个地方出现了倒退。这仍然不是一个完整的解决方案,因为不能期望 Ubuntu 用户知道他们有本地邮件并且应该设置他们的邮件客户端来阅读它。
添加:鉴于当前的回复,服务器用户应该能够应对,前提是他知道这个问题。很公平。但是考虑一下 J. Random 桌面用户,他不知道如何使用命令行,只知道如何单击邮箱图标来阅读他的邮件。如何通知他他的系统想要告诉他一些事情?(如果不可避免,请允许更有能力的用户进行一次性干预。)
我知道 cron 事件存储在其中/var/log/syslog,我可以使用如下命令:
sudo cat /var/log/syslog | grep cron
Run Code Online (Sandbox Code Playgroud)
去看他们。
我宁愿让系统保留一个单独的 cron 日志文件,这样它就不会做太多的工作来观察它,因为它syslog会对所有消息进行排序以提取cron通知。
然后我想使用该watch命令,所以我总是有一个打开的终端窗口显示 cron 活动。
如何让系统保留一个单独的/var/log/cron.log文件?
我想创建 Cron 作业来运行编译.c文件。假设program.c我的桌面上有一个名为 的文件。我使用 编译它gcc program.c,它创建了a.out可执行文件。
我想在某个时间通过 Cron 打开一个终端并在a.out里面运行以将其输出显示到终端中。我已经打开 Crontab 进行编辑 - crontab -e- 我试过:
30 * * * * /home/username/Desktop/a.out /Desktop/a.out
Run Code Online (Sandbox Code Playgroud)
和
30 * * * * cd /home/username/Desktop/a.out && ./a.out
Run Code Online (Sandbox Code Playgroud)
和
30 * * * * /bin/sh /home/username/Desktop/a.out
Run Code Online (Sandbox Code Playgroud)
和
30 * * * * bash -c "exec /home/username/Desktop/a.out"
Run Code Online (Sandbox Code Playgroud)
没有任何作用!