为什么 anacron 没有运行?

为什么 anacron 没有运行?

我有一个安装了 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 每天都崩溃 :-)

相关内容