Como executar um script apenas uma vez por dia com o cron sem especificar o tempo de execução

7

Eu quero executar um script de backup uma vez por dia, mas não quero especificar um determinado horário, apenas uma vez por dia. Eu li que o atributo cron diariamente @ é executado todos os dias às 00:00, mas eu não sei se o servidor de recebimento estará ativo neste momento.

É possível configurar cron para executar esse script apenas uma vez por dia, independentemente do horário? Ou execute o script até conseguir e tente novamente no dia seguinte?

@reboot seria uma opção, no entanto, a extremidade de envio poderia ser reinicializada várias vezes por dia, o que levaria a backups desnecessários.

    
por ECII 27.12.2011 / 17:06

2 respostas

12

Você pode querer usar o anacron.

De sua página de manual

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.

O howU da comunidade Ubuntu: link

Usando o anacron:

  1. Basta colocar o arquivo de script executável em /etc/cron.hourly , /etc/cron.daily , /etc/cron.weekly ou /etc/cron.monthly .

  2. Toque no arquivo de script:

    sudo touch /etc/cron.daily/scriptfile
    

    ( cron.daily se for um trabalho diário).

Teste de 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.

Mensagens anacron no log:

grep anacron /var/log/syslog

O anacron mantém os timestamps no /var/spool/anacron/ . Se você remover os arquivos cron.daily , cron.weekly ou cron.monthly de lá, o anacron executará scripts diários, semanais ou mensais na próxima inicialização.

    
por user26687 27.12.2011 / 17:35
0

Use @daily como você é, mas adicione @reboot também. @reboot executará o script quando você inicializar.

@reboot /full_path/to/script

Veja cron do Ubuntu wiki para informações adicionais.

    
por Panther 27.12.2011 / 17:31

Tags