Ubuntu 13.04の毎週の仕事にanacronを使用したいと思います。
ここに私の/ etc/crontabがあります:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 5 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
ここに私の/ etc/anacrontabがあります:
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
# These replace cron's entries
1 5 cron.daily run-parts --report /etc/cron.daily
7 10 cron.weekly run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly run-parts --report /etc/cron.monthly
ここに私の/etc/cron.weekly/0anacronがあります:
#!/bin/sh
#
# anacron's cron script
#
# This script updates anacron time stamps. It is called through run-parts
# either by anacron itself or by cron.
#
# The script is called "0anacron" to assure that it will be executed
# _before_ all other scripts.
test -x /usr/sbin/anacron || exit 0
anacron -u cron.weekly
そして最後に、/etc/cron.weekly/に配置したスクリプトを次に示します。
#!/bin/sh
curlftpfs -o allow_other,skip_pasv_ip mauro-casa.no-ip.org:21001/Volume_1/Foto/Marta/ /home/mauro/Pubblici/Marta_NAS/
sleep 5
rsync -rlt --update --ignore-existing --size-only --exclude=.picasaoriginals/* --exclude=.picasaoriginals --exclude=.directory --exclude=.dropbox --exclude=picasa.ini --temp-dir=/home/mauro/.rsync-temp/ /home/mauro/Dropbox/Marta/ /home/mauro/Pubblici/Marta_NAS/
umount -l /home/mauro/Pubblici/Marta_NAS/
スクリプトは明らかにchmod
ed +x
であり、手動で(Sudo
を使用して)実行すると完全に機能します。
編集#1
要求に応じて、次の出力があります
cat /var/log/cron.log | grep "Oct 13"
Oct 13 08:29:05 mauro-alienware anacron[1315]: Anacron 2.3 started on 2013-10-13
Oct 13 08:29:05 mauro-alienware cron[1266]: (CRON) INFO (pidfile fd = 3)
Oct 13 08:29:05 mauro-alienware cron[1403]: (CRON) STARTUP (fork ok)
Oct 13 08:29:05 mauro-alienware cron[1403]: (CRON) INFO (Running @reboot jobs)
Oct 13 08:29:06 mauro-alienware anacron[1315]: Will run job `cron.daily' in 5 min.
Oct 13 08:29:06 mauro-alienware anacron[1315]: Jobs will be executed sequentially
Oct 13 08:34:05 mauro-alienware anacron[1315]: Job `cron.daily' started
Oct 13 08:34:05 mauro-alienware anacron[1651]: Updated timestamp for job `cron.daily' to 2013-10-13
Cron.weeklyのログは表示されないようです。
代わりに、cat /var/log/cron.log.1 | grep "Oct 11"
出力からの抜粋を次に示します。
Oct 11 06:47:01 mauro-alienware CRON[12553]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))
Oct 11 06:59:11 mauro-alienware anacron[5125]: Anacron 2.3 started on 2013-10-11
Oct 11 06:59:11 mauro-alienware anacron[5125]: Normal exit (0 jobs run)
Oct 11 07:45:54 mauro-alienware anacron[5444]: Anacron 2.3 started on 2013-10-11
Oct 11 07:45:54 mauro-alienware anacron[5444]: Normal exit (0 jobs run)
Oct 11 07:46:39 mauro-alienware CRON[9156]: (root) CMD (start -q anacron || :)
Oct 11 07:46:39 mauro-alienware anacron[9159]: Anacron 2.3 started on 2013-10-11
Oct 11 07:46:39 mauro-alienware anacron[9159]: Normal exit (0 jobs run)
Oct 11 08:46:31 mauro-alienware cron[1249]: (CRON) INFO (pidfile fd = 3)
Oct 11 08:46:31 mauro-alienware cron[1308]: (CRON) STARTUP (fork ok)
Oct 11 08:46:31 mauro-alienware cron[1308]: (CRON) INFO (Running @reboot jobs)
Oct 11 08:46:31 mauro-alienware anacron[1303]: Anacron 2.3 started on 2013-10-11
Oct 11 08:46:31 mauro-alienware anacron[1303]: Normal exit (0 jobs run)
Oct 11 08:46:35 mauro-alienware anacron[1839]: Anacron 2.3 started on 2013-10-11
Oct 11 08:46:35 mauro-alienware anacron[1839]: Normal exit (0 jobs run)
Oct 11 08:46:37 mauro-alienware anacron[4700]: Anacron 2.3 started on 2013-10-11
Oct 11 08:46:37 mauro-alienware anacron[4700]: Normal exit (0 jobs run)
Tunを実行しようとしているスクリプトの実際の名前を投稿しませんでしたが、「。sh」で終わる場合のように、ドット(「。」)が含まれている可能性があります。
run-partsはnot英数字またはハイフン以外を含むスクリプトを実行します。ドットを削除すれば大丈夫です。
通常、anacronはデーモンとして実行されません。 Debianベースのシステムでは、/etc/cron.d/anacron
の古典的なcronで実行されます。また、システムの起動後に起動し、スリープから再開し、電源管理状態を変更します。
Sudo cat /var/spool/anacron/cron.weekly
を使用して、anacronジョブが最後に実行された日付を確認できます。
cat /etc/cron.d/anacron
anachronが実行される時間と曜日を表示します。例:
# /etc/cron.d/anacron: crontab entries for the anacron package
Shell=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
30 7 * * * root start -q anacron || :
毎朝午前7時30分に実行されますが、週に1回だけ実行されます。書かれた日付をチェックします
Sudo cat /var/spool/anacron/cron.weekly
(日付が古い場合、そのファイルの日付が開始および更新されます)