Linux(Ubuntu)16.04を使用しています。/etc/cron.daily
anacronが処理する一連のスクリプトがあります。以前は毎日正常に動作していましたが、最近は動作していないことに気付きました。それがアップデートなのか他の何かなのかわかりません。結果を出さずに考えることができるすべてを試したので、それは私を怒らせています。これまでに確認したことは次のとおりです。
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が実行を試行しているように見え、syslogにエラーはありません。また、cron.dailyをチェックすると、毎日のようにsyslogにログエントリがあります。
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
3)/etc/cron.daily/bingbot
スクリプトを呼び出す前に、スクリプトに問題がないことを確認するために、実行した日付のファイルを作成する行も追加しました(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
ていて、動作し始めるでしょう。しかし、この許可の問題の原因は何でしょうか?
UPDATE2 Anacronは今日もスクリプトの実行に失敗しました。上記のログと同じ「Permission Denied」エラー。また、以下の行/etc/crontab
はanacronをrootとして実行します:
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
更新3コンピューターを再起動した後、問題は約3日間消えましたが、その後再び現れました。25日、syslogでcron.dailyが終了したと言いましたが、これは奇妙な動作のようです。しかし、26日には、タイムスタンプが更新されたとsyslogで言ったため、動作しているように見えました。27日には、実行に完全に失敗しました。これは非常識です。何が原因なのかわかりません。
スクリプトが実行されない理由は何でしょうか?
cron
、タスクを実行する追加のシェルを起動して、sleep
それらの間で呼び出しを行うことにより、それらの周りで作業しました。探している答えではありませんが、cron
問題を解決するまで仕事は完了です。確かに、私の自家製のスケジューラは非常にうまく機能するので、タスクをに切り替えることはありませんでしcron
たcron
。これらの価値があるのはcrontab -e
、ではなくで追加されたため/etc/cron.daily
です。