web-dev-qa-db-fra.com

Comment exécuter un script une seule fois par jour avec cron sans spécifier le temps d'exécution

Je souhaite exécuter un script de sauvegarde une fois par jour, mais je ne souhaite pas spécifier une heure donnée, juste une fois par jour. J'ai lu que l'attribut @daily cron est exécuté tous les jours à 00h00, mais je ne sais pas si le serveur de réception sera opérationnel à cette heure-ci.

Est-il possible de configurer cron pour exécuter ce script une seule fois par jour, quelle que soit l'heure? Ou exécutez le script jusqu'à ce qu'il réussisse, puis réessayez le lendemain?

@reboot serait une option, mais l’expéditeur pourrait redémarrer plusieurs fois par jour, auquel cas des sauvegardes inutiles seraient nécessaires.

7
ECII

Vous voudrez peut-être utiliser l'anacron.

De sa page de manuel

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.

Le HowTo de la communauté Ubuntu: https://help.ubuntu.com/community/CronHowto

Utilisation d'anacron:

  1. Il suffit de placer le fichier de script exécutable dans /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly ou /etc/cron.monthly.

  2. Touchez le fichier de script:

    Sudo touch /etc/cron.daily/scriptfile
    

    (cron.daily s'il s'agit d'un travail quotidien).

Test d'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.

Messages Anacron dans le journal:

grep anacron /var/log/syslog

Anacron conserve les horodatages dans le /var/spool/anacron/. Si vous supprimez les fichiers cron.daily, cron.weekly ou cron.monthly, anacron exécutera des scripts quotidiens, hebdomadaires ou mensuels au prochain démarrage.

12
user26687

Utilisez @daily comme vous êtes, mais ajoutez également @reboot. @reboot exécutera le script au démarrage.

@reboot /full_path/to/script

Voir buntu wiki cron pour plus d'informations.

0
Panther