为什么 anacron 不会运行?

Ama*_*rus 9 ubuntu debian log-files cron

我有一个安装了 anacron 的 Ubuntu 系统。但是我很确定它没有运行。它没有运行 /etc/cron.daily 中的命令来轮换 syslog 文件(我使用的是 sysklog,它有自己的轮换日志方法,而不是使用 logrotate)。上次轮换日志是在 2009 年 10 月。/var/spool/anacron/cron.daily存在且内容为20091015. AFAIR 我们当时停电了,一切都重新启动了。

我该如何调试 anacron?我怎么知道它为什么没有运行?我的第一直觉是寻找/var/log/anacron,但那并不存在。我该如何修复它以使其再次运行?

小智 12

尝试运行:

sudo run-parts --test /etc/cron.daily
Run Code Online (Sandbox Code Playgroud)

该行将说明您的新脚本是否属于“已识别”脚本。例如,可能是脚本名称错误、缺少 exec 标志或权限问题等。

我通过这种方式发现run-parts工具(由 cron 使用)不喜欢.sh后缀


Den*_*son 5

请看以下内容:

zgrep anacron /var/log/cron.log.{9..1}* /var/log/cron.log | less
Run Code Online (Sandbox Code Playgroud)

对我来说,一个系统上的最后一个条目是 2008 年 11 月 4 日。

zgrep anacron /var/log/syslog.{9..1}* /var/log/syslog | less
Run Code Online (Sandbox Code Playgroud)

对我来说,参赛作品范围从 12 月 28 日到 1 月 4 日。

cat /etc/crontab
Run Code Online (Sandbox Code Playgroud)

您应该每天、每周和每月看到与此类似的条目:

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
Run Code Online (Sandbox Code Playgroud)

这应该显示一堆文件:

ls -l /etc/cron.{daily,weekly,monthly}
Run Code Online (Sandbox Code Playgroud)

/etc/cron.daily我有 logrotate 和 sysklogd。

如果你这样做:

ps auxww | grep [c]ron
Run Code Online (Sandbox Code Playgroud)

您应该看到cron守护进程正在运行。

如果你这样做:

cat /etc/cron.daily/sysklogd
Run Code Online (Sandbox Code Playgroud)

您应该看到几行以|| exit 0- 检查以确保文件存在,并且对于具有test -x它们的文件是可执行的。其中一些不适合我,因为我使用的是 logrotate。

检查 syslogd 是否正在运行:

ps -C syslogd
Run Code Online (Sandbox Code Playgroud)

查看 savelog 是否存在并且是可执行的:

ls -l $(type -p savelog)
Run Code Online (Sandbox Code Playgroud)

这就是我目前能想到的。

  • 另外请记住 anacron 本质上只是 cron 的配置,所以它不是守护进程 (4认同)