So führen Sie ein Skript mit cron nur einmal pro Tag aus, ohne die Ausführungszeit anzugeben

7

Ich möchte ein Sicherungsskript einmal pro Tag ausführen, möchte jedoch keine bestimmte Zeit angeben, sondern nur einmal pro Tag. Ich habe gelesen, dass das Attribut @daily cron jeden Tag um 00:00 Uhr ausgeführt wird, aber ich weiß nicht, ob der empfangende Server zu diesem Zeitpunkt aktiv sein wird.

Ist es möglich, crondieses Skript unabhängig von der Uhrzeit nur einmal pro Tag auszuführen? Oder führen Sie das Skript aus, bis es erfolgreich ist, und versuchen Sie es am nächsten Tag erneut?

@reboot wäre eine Option, jedoch könnte das Sendeende mehrmals pro Tag neu gestartet werden. In diesem Fall würde dies zu unnötigen Sicherungen führen.

ECII
quelle

Antworten:

13

Möglicherweise möchten Sie das Anakron verwenden.

Von seiner Manpage

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.

Die Ubuntu-Community HowTo: https://help.ubuntu.com/community/CronHowto

Anacron verwenden:

  1. Setzen Sie einfach die ausführbare Skriptdatei in der /etc/cron.hourly, /etc/cron.daily, /etc/cron.weeklyoder /etc/cron.monthly.

  2. Berühren Sie die Skriptdatei:

    sudo touch /etc/cron.daily/scriptfile
    

    ( cron.dailywenn es ein täglicher Job ist).

Anakron testen:

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-Nachrichten im Protokoll:

grep anacron /var/log/syslog

Anacron hält Zeitstempel in der /var/spool/anacron/. Wenn Sie Dateien von dort entfernen oder von dort entfernen cron.daily, führt anacron beim nächsten Start tägliche, wöchentliche oder monatliche Skripte aus.cron.weeklycron.monthly

user26687
quelle
Wenn Sie also nur die Skripte in cron.daily ablegen, ist das erledigt?
ECII
1
Was brauchst du, um das Skript zu berühren?
ECII
Manchmal führt das Anakron hier das neue Skript nicht aus. Die Berührung hat hier geholfen.
user26687
0

Verwenden Sie @daily so wie Sie sind, aber fügen Sie auch @reboot hinzu. @reboot führt das Skript beim Booten aus.

@reboot /full_path/to/script

Weitere Informationen finden Sie unter Ubuntu Wiki Cron .

Panther
quelle
1
Ja, aber das war, dass ich möglicherweise mehrere Hinrichtungen pro Tag bekomme, oder?
ECII