Я имею подобные вопросы беспорядку о кроне и anacron (настраивающий расписание резервного копирования для rsnapshot), но там не был отвечен также.
Моя проблема состоит в том, чтобы иметь резервную стандартную программу на ежедневной основе на ноутбуке. Так, моя первая идея состояла в том, чтобы установить его в a 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
Поместите сценарий в /etc/cron.daily
, и вы получите именно то, что хотели.