我有一个安装了 anacron 的 Ubuntu 系统。但是我很确定它没有运行。它没有运行 /etc/cron.daily 中的命令来轮换 syslog 文件(我使用的是 sysklog,它有自己的轮换日志方法,而不是使用 logrotate)。上次轮换日志是在 2009 年 10 月。/var/spool/anacron/cron.daily
存在,内容是20091015
。据我所知,当时我们停电了,一切都重新启动了。
我该如何调试 anacron?我该如何查看它为何无法运行?我的第一反应是寻找/var/log/anacron
,但找不到。我该如何修复它以使其再次运行?
答案1
请看以下内容:
zgrep anacron /var/log/cron.log.{9..1}* /var/log/cron.log | less
对我来说,一个系统上的最后一个条目是2008 年 11 月 4 日。
zgrep anacron /var/log/syslog.{9..1}* /var/log/syslog | less
对我来说,这些条目的时间范围是从 12 月 28 日到 1 月 4 日。
cat /etc/crontab
您应该会看到与每日、每周和每月类似的条目:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
这应该会显示一堆文件:
ls -l /etc/cron.{daily,weekly,monthly}
我/etc/cron.daily
有 logrotate 和 sysklogd。
如果你这么做:
ps auxww | grep [c]ron
您应该看到cron
守护进程正在运行。
如果你这样做:
cat /etc/cron.daily/sysklogd
您应该会看到几行以|| exit 0
- 结尾的行,请检查以确保文件存在,并且对于带有test -x
- 的文件,它们是可执行的。有些对我来说不是,因为我使用的是 logrotate。
检查 syslogd 是否正在运行:
ps -C syslogd
查看 savelog 是否存在且是否可执行:
ls -l $(type -p savelog)
目前我能想到的就这么多。
答案2
尝试运行:
sudo run-parts --test /etc/cron.daily
该行将告诉您新脚本是否在“可识别”的脚本中。例如,脚本名称可能错误、缺少执行标志或权限问题等。
我发现运行部件工具(由 cron 使用)不喜欢.sh后缀
答案3
我有一个 ubunutu 8.04 vps (w/plesk),其中安装了 anacron,但配置错误,无法运行。apt-get reinstall 重新创建了所有相关文件。
此后,我要做的就是向每小时 crontab 中添加一个条目来启动 anacron 并让它完成工作。
我在 cron.hourly/ 中输入的脚本只是
#!bin/bash
/path/to/anacron -s
答案4
有些 Linux cron 不稳定。我们使用 cfengine 来重启 cron,使用 cron 来监视 cfengine 是否有关键任务。不过,现在这两个 cron 都没有明显崩溃。不像 90 年代那样,当时 cron 每天都崩溃 :-)