Anacron cron.daily 未运行我的脚本

Anacron cron.daily 未运行我的脚本

我在 Linux (Ubuntu) 16.04 上。我有一组由/etc/cron.dailyanacron 处理的脚本。它们过去每天都运行良好,但我注意到它们最近没有运行。我不确定这是因为更新还是其他原因。这让我很抓狂,因为我已经尝试了所有我能想到的方法,却没有得到结果。以下是我到目前为止检查过的内容:

1)grep "Nov 22" /var/log/syslog | grep "cron.daily" -B 5 -A 5

Nov 22 06:24:47 ubuntu16 dbus[816]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Nov 22 06:24:47 ubuntu16 systemd[1]: Started Network Manager Script Dispatcher Service.
Nov 22 06:24:47 ubuntu16 nm-dispatcher: req:1 'dhcp4-change' [enp1s0]: new request (1 scripts)
Nov 22 06:24:47 ubuntu16 nm-dispatcher: req:1 'dhcp4-change' [enp1s0]: start running ordered scripts...
Nov 22 06:25:01 ubuntu16 CRON[6455]: (root) CMD (cupsenable HP-HP-OfficeJet-Pro-8710)
**Nov 22 06:25:01 ubuntu16 CRON[6456]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily ))**
Nov 22 06:30:01 ubuntu16 CRON[6485]: (root) CMD (cupsenable HP-HP-OfficeJet-Pro-8710)
Nov 22 06:35:01 ubuntu16 CRON[6513]: (root) CMD (cupsenable HP-HP-OfficeJet-Pro-8710)
Nov 22 06:39:01 ubuntu16 CRON[6536]: (root) CMD (  [ -x /usr/lib/php/sessionclean ] && /usr/lib/php/sessionclean)
Nov 22 06:40:01 ubuntu16 CRON[6583]: (root) CMD (cupsenable HP-HP-OfficeJet-Pro-8710)
Nov 22 06:45:01 ubuntu16 CRON[6612]: (root) CMD (cupsenable HP-HP-OfficeJet-Pro-8710)

因此,看起来 cron.daily 脚本正在运行,或者至少 anacron 尝试运行它,并且系统日志中没有错误。我还检查了 cron.daily 每天都会在系统日志中记录日志条目,这是应该的。

2)我确保我的脚本是可执行的ls -l /etc/cron.daily/

-rwxr-xr-x 1 root root  139 Nov 20 16:24 bingbot
-rwxr-xr-x 1 root root  142 Nov 20 16:24 bingbotb
-rwxr-xr-x 1 root root  142 Nov 20 16:25 bingbotc

/etc/cron.daily/bingbot3)我在调用脚本之前还添加了一行,以便创建一个带有运行日期的文件,以确保它不是我的脚本的问题( echo "Time: $(date). BINGREWARDS SCRIPT RAN." >> /home/user/bingbot.txt)但是,第二天它没有创建,bingbot.txt所以我知道它没有运行。

4)我从手动运行了我的脚本/etc/cron.daily/bingbot,它运行完美,并创建了一个带有日期的文件。

5)我的脚本不需要 sudo 权限。

6)内容/etc/cron.daily/bingbot

#!/bin/sh
echo "Time: $(date). BINGREWARDS SCRIPT RAN." >> /home/toshiba/bingbot.txt
python /home/user/Desktop/BingRewards/mainpy

7)更新尝试手动运行 anacron sudo run-parts /etc/cron.daily,成功运行了我的脚本。有趣的是...在日志中我得到了:

Nov 22 17:01:14 ubuntu16 anacron[15605]: Anacron 2.3 started on 2017-11-22
Nov 22 17:01:14 ubuntu16 anacron[15605]: Can't open timestamp file for job cron.daily: Permission denied
Nov 22 17:01:14 ubuntu16 anacron[15605]: Aborted

完成后我sudo run-parts /etc/cron.daily再次运行,没有出现该错误;它说Nov 22 17:35:55 ubuntu16 anacron[16777]: Updated timestamp for job cron.daily' to 2017-11-22 可能是权限错误,它会开始工作。但是是什么导致了这个权限问题?

更新2Anacron 今天也运行脚本失败了。与上面的日志中相同的“权限被拒绝”错误。此外,行中的行/etc/crontab以 root 身份执行 anacron,就像它应该的那样:

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

更新 3重启电脑后,问题消失了约 3 天,但随后又出现了。25 日,系统日志显示 cron.daily 已终止,这似乎是一种奇怪的行为。然而,26 日它似乎可以正常工作,因为它在系统日志中显示它已更新时间戳。27 日它完全无法运行。这太疯狂了。我不知道是什么原因造成的。

它无法运行我的脚本的原因是什么?

答案1

我在 EL6(不是 debian)上遇到了同样的问题,但原因可能相同。由于安全脚本,我对 /etc/cron.hourly/0anacron 的权限错误(错误=chmod 600)。我重新安装了 cronie-anacron,它恢复了执行位(即 chmod 755),并且开始工作。

请注意,/usr/bin/run-parts 会检查 /etc/cron.hourly 中的“部分”或文件是否可执行:

if [ -x $i ]; then

而不是它们是否可读...所以要注意这些文件的权限。还要注意 anacron 本身实际上是用完了 cron.hourly(即使您指定的作业是每日的)

相关内容