我有类似的问题关于 cron 和 anacron 的混淆(为 rsnapshot 设置备份计划),但也没有得到答复。
问题
我的问题是每天在笔记本电脑上进行备份。所以我的第一个想法是将其设置crontab
为
$ crontab -e
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# I guess as user I have no access to /var/log from this crontab, do I?
@daily ~/my-backups.sh >> ~/.log/my-backup.log
然后脚本my-backups.sh
应该在每天午夜运行(0 0 * * *
),对吗?
好的,阅读文档后,我发现了 anacron。但是由于脚本没有运行,问题就出现了。从文档中我了解到,如果计算机在应该执行日常例程时处于关闭状态,cron
那么anacron
它应该在启动时启动。但这也没有发生。
我需要做其他设置吗?(根据文档,我认为不需要这样做,而且可以立即使用,但这并没有发生。)
问题
我如何设置 cron/anacron 来执行每日脚本,并且如果计算机在执行时关闭,它应该在启动时或启动后一段时间运行该脚本。
使用版本cron.daily
cron.daily
我按照建议修改了备份脚本。我的测试脚本是:
#!/bin/bash
date +%Y-%m-%d >> /var/log/backup.log
然后将其添加/etc/cron.daily
为符号链接
sudo ln -s ~/bin/my-backup /etc/cron.daily/backup
我检查了一下,脚本和符号链接都具有执行权限。
然后,今天,我大约 9 点启动了我的计算机,并且第一个条目也/var/log/syslog
大约在那个时间,但是没有任何迹象cron.daily
。
$ cat /var/log/syslog | grep cron
Feb 16 09:05:15 box cron[981]: (CRON) INFO (pidfile fd = 3)
Feb 16 09:05:15 box cron[981]: (CRON) INFO (Running @reboot jobs)
Feb 16 09:17:01 box CRON[4574]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 10:17:01 box CRON[6453]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 11:17:01 box CRON[6878]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 12:17:01 box CRON[7310]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 13:14:01 box CRON[7582]: (root) CMD ( test -x /etc/cron.daily/popularity-contest && /etc/cron.daily/popularity-contest --crond)
Feb 16 13:17:01 box CRON[7595]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
Feb 16 14:17:02 box CRON[8134]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
此外,最后一次执行 anacron 的时间是昨天
$ sudo cat /var/spool/anacron/cron.daily
20170215
我检查了一下,我的脚本列在cron.daily
$ run-parts --test --report /etc/cron.daily
/etc/cron.daily/0anacron
/etc/cron.daily/apport
/etc/cron.daily/apt-compat
/etc/cron.daily/backup
/etc/cron.daily/bsdmainutils
/etc/cron.daily/cracklib-runtime
/etc/cron.daily/dpkg
/etc/cron.daily/google-chrome
/etc/cron.daily/google-talkplugin
/etc/cron.daily/logrotate
/etc/cron.daily/man-db
/etc/cron.daily/mlocate
/etc/cron.daily/passwd
/etc/cron.daily/popularity-contest
/etc/cron.daily/update-notifier-common
/etc/cron.daily/upstart
答案1
放置你的脚本/etc/cron.daily
,你就会得到你想要的东西。