Как запустить скрипт только один раз в день с помощью cron без указания времени выполнения

7

Я хочу запускать сценарий резервного копирования один раз в день, но я не хочу указывать определенное время, только один раз в день. Я читал, что атрибут @daily cron работает каждый день в 00:00, но я не знаю, будет ли в это время получать сервер.

Можно ли настроить cron для запуска этого скрипта один раз в день, независимо от времени? Или запустите сценарий, пока он не удастся, а затем повторите попытку на следующий день?

@reboot будет вариантом, однако отправная часть может перезагружаться несколько раз в день, и в этом случае это приведет к ненужным резервным копиям.

    
задан ECII 27.12.2011 в 16:06
источник

2 ответа

12

Возможно, вы захотите использовать анакрон.

Из справочной страницы

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: Ссылка

Использование анакрона:

  1. Просто введите исполняемый файл сценария в /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly или /etc/cron.monthly .

  2. Прикоснитесь к файлу скрипта:

    sudo touch /etc/cron.daily/scriptfile
    

    ( cron.daily , если это ежедневное задание).

Тестирование анакрона:

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 будет выполнять ежедневные, еженедельные или ежемесячные скрипты при следующем запуске.

    
ответ дан user26687 27.12.2011 в 16:35
источник
0

Используйте @daily, как и вы, но добавьте @reboot. @reboot запустит скрипт при загрузке.

@reboot /full_path/to/script

Подробнее см. Ubuntu wiki cron .

    
ответ дан Panther 27.12.2011 в 16:31