Я хочу запускать скрипт резервного копирования один раз в день, но не хочу указывать определенное время, только один раз в день. Я читал, что атрибут @daily cron запускается каждый день в 00:00, но я не знаю, будет ли в данный момент запущен принимающий сервер.
Можно ли настроить cron
на запуск этого сценария только один раз в день, независимо от времени? Или запускайте сценарий до тех пор, пока он не выполнится успешно, а затем повторите попытку на следующий день?
@reboot может быть вариантом, однако отправляющая сторона может перезагружаться несколько раз в день, и в этом случае это приведет к ненужным резервным копиям.
Можно хотеть использовать anacron.
Из его страницы справочника
NAME anacron - runs commands periodically SYNOPSIS anacron [-s] [-f] [-n] [-d] [-q] [-t anacrontab] [-S spooldir] [job] ... anacron [-S spooldir] -u [-t anacrontab] [job] ... anacron [-V|-h] anacron -T [-t anacrontab] DESCRIPTION Anacron can be used to execute commands periodically, with a frequency specified in days. Unlike cron(8), it does not assume that the machine is running continuously. Hence, it can be used on machines that aren't running 24 hours a day, to control daily, weekly, and monthly jobs that are usu‐ ally controlled by cron.
Сообщество Ubuntu HowTo: https://help.ubuntu.com/community/CronHowto
Используя anacron:
Просто вставьте исполняемый файл сценария /etc/cron.hourly
, /etc/cron.daily
, /etc/cron.weekly
или /etc/cron.monthly
.
Коснитесь файла сценария:
sudo touch /etc/cron.daily/scriptfile
(cron.daily
если это - ежедневное задание).
Тестирование anacron:
sudo anacron -f -d
-f Force execution of the jobs, ignoring the timestamps. -d Don’t fork to the background. In this mode, Anacron will output informational messages to standard error, as well as to syslog. The output of jobs is mailed as usual.
Anacron обменивается сообщениями в журнале:
grep anacron /var/log/syslog
Anacron удерживает метки времени /var/spool/anacron/
. Если Вы удаляете cron.daily
, cron.weekly
или cron.monthly
файлы оттуда, anacron будут ежедневно выполняться, еженедельные или ежемесячные сценарии при следующем запуске.
Используйте @daily как есть, но также добавьте @reboot. @reboot запустит скрипт при загрузке.
@reboot /full_path/to/script
См. Ubuntu wiki cron для получения дополнительной информации.