Quando viene eseguito `cron.daily`?


199

Quando vengono eseguite le voci in cron.daily(e .weeklye .hourly), ed è configurabile?

Non ho trovato una risposta definitiva a questo, e spero che ce ne sia uno.

Sto usando RHEL5 e CentOS 4, ma anche per altre distro / piattaforme sarebbe fantastico.


2
Su NetBSD , i tempi per i cronjob giornalieri, settimanali e mensili sono impostati nel crontab di root.
hd1,

Questa domanda sarebbe più utile se la domanda fosse modificata per essere più generica. Almeno rendi la domanda generica per qualsiasi versione di Redhat, centos distro invece che solo per le versioni 4 e 5 (che non sono ampiamente utilizzate e sono " fine della produzione " (simile alla fine della vita ).
Trevor Boyd Smith

@TrevorBoydSmith - questa domanda è stata posta quasi 8 anni fa. Sentiti libero di chiedere uno aggiornato per le versioni più recenti. Ma RHEL 6 non esisteva nemmeno nell'aprile 2010: access.redhat.com/articles/3078#RHEL6
warren

@warren il mio intento non è quello di criticare ma semplicemente migliorare la domanda e lo stackoverflow in generale. (Capisco che RHEL 6 non esisteva quando è stata posta la domanda. Perché la domanda ha così tanti voti adesso sarebbe bello averla più generica.)
Trevor Boyd Smith

@TrevorBoydSmith .. c'è già una risposta per CentOS / RHEL 6 :) ... Sarei felice di approvarti buone modifiche se hai qualche idea. Vai avanti e apporta le modifiche suggerite alla domanda che hai pensato
Warren,

Risposte:


151

Per le distribuzioni menzionate:

Su CentOS 5.4 (dovrebbe essere lo stesso per RHEL5)

grep run-parts /etc/crontab

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Quindi cron.daily funziona alle 04:02.

Lo stesso su CentOS 4.8


1
C'è qualche motivo dietro questo? Posso solo supporre che sarebbe il momento più silenzioso sul server.
The Pixel Developer

@ a che ora funziona in Ubuntu? puoi per favore dire come posso controllarlo? non riesco a capire l'output del comando
Narendra Jaggi,

@NarendraJaggi il comando "run-parts" significa "esegui tutto in questa cartella". Le cartelle cron.daily, ecc. Funzionano perché esiste un processo cron per eseguire parti di esecuzione su queste directory. Quindi grep run-parts /etc/crontabtrova solo le istruzioni su quando viene chiamato run-parts per ognuna di queste directory.
Jordan Reiter,

2
Questa non è più una risposta valida per CentOS 6 o versioni successive, scorrere verso il basso per ulteriori informazioni.
lzap,

74

Dalla pagina man:

 Cron also searches for /etc/anacrontab

/etc/anacrontab nel mio sistema (Fedora 12):

1       5       cron.daily              nice run-parts /etc/cron.daily
7       25      cron.weekly             nice run-parts /etc/cron.weekly
@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly

Guarda anche man anacrontab


6
Questo è il caso di CentOS 6. Grazie.
mbrownnyc,

3
Ciò significa 5am ogni "1" giorni ?. Siamo spiacenti, ma questo non risponde a nulla.
elysch,

3
@elysch Lasciami ripetere l'ultima riga della mia risposta: vedi anche "man anacrontab"
leonbloy

2
Buona spiegazione di anacron qui . Fondamentalmente, anacron non ha un orario di inizio fisso , ma inizierà il processo in base a quando è stato eseguito l'ultimo processo, con un ritardo specificato. Se la macchina è spenta quando il processo avrebbe dovuto essere eseguito , avvierà il processo al riavvio della macchina, dopo il ritardo specificato (salvo nessun intervallo speciale + ritardo casuale, vedere la risposta di @spechal).
storm_m2138

2
@mbrownnyc e anche CentOS-7
Trevor Boyd Smith

43

Per CentOS 6, è necessario grep / etc / anacrontab e la risposta varia se il server / laptop / dekstop / etc è stato spento o meno.

cat /etc/anacrontab 
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly

Quindi, tra le ore 3AM e 10 PM** (dopo il riavvio e dopo che la macchina è rimasta in funzione per 5 minuti ^^), eseguire /etc/cron.daily. Se non c'è riavvio, il lavoro dovrebbe essere eseguito alle 3:05 AM++.

** As defined by START_HOURS_RANGE
^^ As defined by FIELD_TWO (i.e. the 5 after the 1 in the cron.daily line)
++ plus a random time between 0 and 45 minutes as defined by RANDOM_DELAY

Riferimento: http://linux.die.net/man/5/anacrontab


14

Per i sistemi SuSE (in particolare SLES 11.1 e openSuSE 10.3) il tempo di esecuzione giornaliero degli script /etc/cron.daily è controllato dal valore della variabile DAILY_TIME impostata nel file / etc / sysconfig / cron .

Se la variabile DAILY_TIME non è impostata, per impostazione predefinita è: (tempo dell'ultimo avvio + 15 minuti).


grazie mille! SuSE è piuttosto opaco per me e apprezzo la tua risposta.
dr0i,

9

Su Ubuntu troverai un file / etc / crontab, da dove è configurato. Immagino sia qualcosa di simile su RH e Centos.


2
Questo è il file giusto per Ubuntu Lucid 10.04 LTS. La mia impostazione predefinita è 6:25 per cron.daily.
geekQ,

Ancora impostato come 6:25 su Ubuntu 15.04. Ma noto che cron deve inserire una certa casualità nel momento in cui inizia i lavori. Osservando i timestamp dei file creati dal mio lavoro quotidiano, vedo in alcuni giorni che corre già alle 6:26 e in altri fino alle 8:04.
Stéphane,

1
Ancora impostato alle 6:25 su Ubuntu 16.04 - Ogni ora alle ore 17 minuti. Tutti i giorni alle 6:25. Ogni settimana alle 6:47 di sabato. Ogni mese alle 6:52 del primo giorno del mese.
WinEunuuchs2Unix

5

CentOS6.x / RedHat6.x installa di default il pacchetto cronie-anacron. Devi:

yum installa cronie-noanacron

yum cancella cronie-anacron

Quindi ora hai /etc/cron.d/dailyjobs per configurare il miglior orario per i tuoi lavori giornalieri, settimanali e mensili.


2
Se anacron è installato, non puoi semplicemente modificare / etc / anacrontab come da altri commenti qui invece di disinstallarlo?
Cincodenada,

1
@cincodenada Non è quello che Daniel Stantos sta suggerendo.
mikemaccana,

4

Uso Slackware (14.0) e non ce l'ho /etc/crontab. Inoltre, anacronnon fa parte della distribuzione.

La soluzione sul mio sistema era semplice come in esecuzione crontab -lcome root:

root@flea:~# crontab -l
# If you don't want the output of a cron job mailed to you, you have to direct
# any output to /dev/null.  We'll do this here since these jobs should run
# properly on a newly installed system.  If a script fails, run-parts will
# mail a notice to root.
#
# Run the hourly, daily, weekly, and monthly cron jobs.
# Jobs that need different timing may be entered into the crontab as before,
# but most really don't need greater granularity than this.  If the exact
# times of the hourly, daily, weekly, and monthly cron jobs do not suit your
# needs, feel free to adjust them.
#
# Run hourly cron jobs at 47 minutes after the hour:
47 * * * * /usr/bin/run-parts /etc/cron.hourly 1> /dev/null
#
# Run daily cron jobs at 4:40 every day:
40 4 * * * /usr/bin/run-parts /etc/cron.daily 1> /dev/null
#
# Run weekly cron jobs at 4:30 on the first day of the week:
30 4 * * 0 /usr/bin/run-parts /etc/cron.weekly 1> /dev/null
#
# Run monthly cron jobs at 4:20 on the first day of the month:
20 4 1 * * /usr/bin/run-parts /etc/cron.monthly 1> /dev/null

3

Dal /etc/anacrontabmio sistema Ubuntu 9.10:

1       5       cron.daily       nice run-parts --report /etc/cron.daily
7       10      cron.weekly      nice run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly nice run-parts --report /etc/cron.monthly

2

Non esiste una struttura di questo tipo per quanto riguarda Solaris. Usa le voci crontab regolari per le attività quotidiane.


1

Aggiornamento di OpenSuse 42.x:

/ etc / crontab mostra un file / usr / lib / cron / run-crons che dovrebbe essere eseguito ogni 15 minuti.

/ usr / lib / cron / run-crons a sua volta (ha righe di codice may) che sta cercando una variabile chiamata DAILY_TIME in / etc / sysconfig / cron

Il file mostra;

# At which time cron.daily should start. Default is 15 minutes after booting
# the system. Example setting would be "14:00".
# Due to the fact that cron script runs only every 15 minutes,
# it will only run on xx:00, xx:15, xx:30, xx:45, not at the accurate time
# you set.

DAILY_TIME=""

Impostalo sul tempo necessario e riavvia cron via;

systemctl restart cron.service
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.