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后缀
请看以下内容:
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)
这就是我目前能想到的。