Risposte:
Sto dando una risposta alternativa qui anche se Trevor ha ragione.
La @weekly
parola chiave cron fa esattamente come ha detto. Tuttavia , la maggior parte delle distribuzioni utilizza run-parts
per eseguire i propri file crontab programmati (su base oraria, giornaliera, settimanale e mensile) che non utilizzano le parole chiave di cron.
Ad esempio , Ubuntu ha un file /etc/cron.weekly
che contiene un file separato per ogni cronjob.
Questo è generalmente definito in /etc/crontab
La versione karmica di 9.10 di Ubuntu include quanto segue /etc/crontab
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
Quindi il crontab settimanale in Ubuntu viene eseguito alle 6.47 di domenica
Nota: quando cerchi manpage per implementazioni di crontab, vuoi usare man 5 crontab
invece di solo man crontab
. Quest'ultimo ti darà solo la sintassi per il comando crontab. Il primo fornisce dettagli sull'implementazione di crontab.
So the weekly crontab in Ubuntu is run at 6.47am on Sunday
. Questo non è corretto perché la test -x /usr/sbin/anacron ||
parte del comando dice di eseguire SOLO le cose a destra ||
se "/ usr / sbin / anacron" NON è eseguibile o non esiste, eppure esiste, quindi run-parts
non verrà mai effettivamente eseguito cron
! Piuttosto, anacron
deve gestirlo, giusto? La tabella di Aanacron in "/ etc / anacrontab" mostra questo per ogni settimana: 7 10 cron.weekly run-parts --report /etc/cron.weekly
ciò significa che il lavoro settimanale viene eseguito ogni 7 giorni con un ritardo di 10 minuti.
@weekly è l'equivalente di: 0 0 * * 0
Quindi funzionerà alle 00:00 di domenica.
La risposta sta nella manpage del crontab stesso, ( man 5 crontab
):
Sono supportati questi "soprannomi" di specifiche temporali che sostituiscono i 5 campi iniziali di data e ora e sono preceduti dal carattere "@":
@reboot : Run once after reboot. @yearly : Run once a year, ie. "0 0 1 1 *". @annually : Run once a year, ie. "0 0 1 1 *". @monthly : Run once a month, ie. "0 0 1 * *". @weekly : Run once a week, ie. "0 0 * * 0". @daily : Run once a day, ie. "0 0 * * *". @hourly : Run once an hour, ie. "0 * * * *".
Quindi, è 0 0 * * 0
, che è 00:00 (in qualsiasi data di qualsiasi mese), purché sia domenica (giorno della settimana 0).