Comando crontab di Linux

crontab

Su sistemi operativi simili a Unix, il comando crontab apre la tabella cron per la modifica. La tabella cron è l'elenco delle attività pianificate per l'esecuzione a intervalli di tempo regolari sul sistema.

Il demone che legge il crontab ed esegue i comandi al momento giusto si chiama cron. Prende il nome da Kronos, il dio greco del tempo.

Questo documento tratta la versione GNU / Linux di crontab.


Sintassi

file crontab [-u user]
crontab [-u user] [-l | -r | -e] [-i] [-s]

Opzioni

filetto Carica i dati crontab dal file specificato. Se il file è un trattino ("-"), i dati crontab vengono letti dall'input standard.
-u utente Specifica l'utente il cui crontab deve essere visualizzato o modificato. Se questa opzione non viene fornita, crontab apre il crontab dell'utente che ha eseguito crontab. Nota: l'uso di su per cambiare utente può confondere crontab, quindi se lo si esegue all'interno di su, utilizzare sempre l'opzione -u per evitare ambiguità.
-l Visualizza l'attuale crontab.
-r Rimuovi l'attuale crontab.
-e Modifica l'attuale crontab, usando l'editor specificato nella variabile di ambiente VISUAL o EDITOR.
-i Come -r, ma fornisce all'utente una richiesta di conferma sì / no prima di rimuovere il crontab.
-s Solo SELinux: aggiunge la stringa di contesto di sicurezza SELinux corrente come impostazione MLS_LEVEL al file crontab prima che si verifichino modifiche o sostituzioni. Vedere la documentazione di SELinux per informazioni dettagliate.

Vantaggi

Il comando crontab viene utilizzato per visualizzare o modificare la tabella dei comandi che deve essere eseguita da cron.

Ogni utente sul tuo sistema può avere un crontab personale.

I file crontab si trovano in / var / spool / (o in una sottodirectory come / var / spool / cron / crontabs), ma non sono pensati per essere modificati direttamente. Invece, vengono modificati eseguendo crontab.

Voci del comando Cron

Ogni voce del comando cron nel file crontab ha cinque campi di data e ora (seguiti da un nome utente, solo se si tratta del file crontab di sistema), seguito da un comando.

I comandi vengono eseguiti da cron quando i campi minuto, ora e mese corrispondono all'ora corrente e almeno uno dei due campi giorno (giorno del mese o giorno della settimana) corrisponde al giorno corrente.

Il demone cron controlla il crontab una volta al minuto.

Campi data e ora

valori consentiti dal campo
minuto 0-59
ora 0-23
giorno del mese 1-31
mese 1-12 (o nomi; vedi esempio sotto)
giorno della settimana 0-7 (0 o 7 è domenica o usa i nomi; vedi sotto)

Uno di questi campi può essere impostato su un asterisco (*), che significa "dal primo all'ultimo". Ad esempio, per eseguire un lavoro ogni mese, inserire * nel campo Mese.

Sono consentiti intervalli di numeri. Gli intervalli sono due numeri separati da un trattino. L'intervallo specificato è inclusivo; ad esempio, 8-11 per una voce "ore" specifica l'esecuzione alle ore 8, 9, 10 e 11.

Gli elenchi sono ammessi. Un elenco è un insieme di numeri (o intervalli) separati da virgole. Esempi: "1,2,5,9", "0-4,8-12".

I valori dei passi possono essere usati insieme agli intervalli. Ad esempio, "0-23 / 2" nel campo Ore significa "ogni altra ora". I passaggi sono consentiti anche dopo un asterisco, quindi se vuoi dire "ogni due ore", puoi usare "* / 2".

I nomi possono anche essere usati per i campi "mese" e "giorno della settimana". Usa le prime tre lettere di quel particolare giorno o mese (il caso non ha importanza). Non sono consentiti intervalli o elenchi di nomi.

Il "sesto" campo (il resto della riga) specifica il comando da eseguire. L'intera porzione di comando della riga, fino a una nuova riga o carattere%, verrà eseguita da / bin / sh o dalla shell specificata nella variabile SHELL del cronfile. I segni di percentuale (%) nel comando, a meno che non siano salvati con una barra rovesciata (), verranno modificati in caratteri di nuova riga e tutti i dati dopo il primo% verranno inviati al comando come input standard.

Si noti che il giorno dell'esecuzione di un comando può essere specificato da due campi: giorno del mese e giorno della settimana. Se entrambi i campi sono limitati (in altre parole, non lo sono *), il comando verrà eseguito quando uno dei campi corrisponde all'ora corrente. Ad esempio, "30 4 1,15 * 5" comporterebbe l'esecuzione di un comando alle 4:30 del mattino il 1 ° e il 15 di ogni mese, più ogni venerdì.

Il file crontab

Ogni riga di un file crontab è "attiva" o "inattiva". Una riga "attiva" è un'impostazione ambientale o una voce di comando cron. Una riga "inattiva" viene ignorata, inclusi i commenti.

Le righe vuote e gli spazi e le schede iniziali vengono ignorati. Le righe il cui primo carattere non spaziale è un cancelletto (#) vengono interpretate come commenti e ignorate. I commenti non sono consentiti sulla stessa riga dei comandi cron, poiché verranno interpretati come parte del comando. Per lo stesso motivo, i commenti non sono consentiti sulla stessa riga delle impostazioni delle variabili di ambiente.

Impostazioni dell'ambiente

Una riga di impostazione dell'ambiente nel crontab può impostare variabili di ambiente ogni volta che cron esegue un lavoro.

Un'impostazione di ambiente nel crontab è formattata come:

nome = valore

Gli spazi attorno al segno di uguale (=) sono facoltativi e tutti gli spazi non iniziali successivi nel valore faranno parte del valore assegnato al nome. La stringa del valore può essere inserita tra virgolette (singole o doppie, ma corrispondenti) per conservare spazi vuoti iniziali o finali.

Alcune variabili d'ambiente sono impostate automaticamente da cron:

  • SHELL è impostato su / bin / sh.
  • LOGNAME e HOME sono impostati dalla riga / etc / passwd del proprietario del crontab. HOME e SHELL possono essere sovrascritti in fase di esecuzione dalle impostazioni nel crontab; LOGNAME non può.
  • La variabile LOGNAME è talvolta chiamata USER su sistemi BSD. Su questi sistemi, verrà impostato anche USER.

Configurazione

Consentire agli utenti di eseguire lavori cron

I lavori Cron possono essere consentiti o non consentiti per i singoli utenti, come definito nei file /etc/cron.allow e /etc/cron.deny. Se cron.allow esiste, un utente deve essere elencato lì per poter utilizzare un determinato comando. Se il file cron.allow non esiste ma esiste il file cron.deny, un utente non deve essere elencato lì per usare un determinato comando. Se nessuno di questi file esiste, solo il superutente potrà utilizzare un determinato comando.

Le autorizzazioni Cron possono anche essere definite utilizzando l'autenticazione PAM (modulo di autenticazione collegabile) per configurare gli utenti che possono o meno utilizzare processi cron di crontab e di sistema. La configurazione di PAM si trova in /etc/cron.d/.

Configurazione della directory temporanea

La directory temporanea per i lavori cron può essere impostata nelle variabili di ambiente elencate di seguito. Se queste variabili non sono definite, viene utilizzata la directory temporanea / tmp predefinita.

File di configurazione

descrizione del file
/etc/cron.allow Se questo file esiste, gli utenti devono essere elencati in questo file per poter eseguire cron job.
/etc/cron.deny Se questo file esiste, gli utenti non devono essere elencati in questo file per poter eseguire cron job.

Se non esiste nessuno dei file di configurazione, solo il superutente può eseguire cron job.


Esempi

Esecuzione di crontab

crontab -e

Modifica il tuo crontab.

crontab -l

Visualizza ("elenco") i contenuti del tuo crontab.

crontab -r

Rimuovi il tuo crontab, annullando la pianificazione effettiva di tutti i lavori crontab.

sudo crontab -u charles -e

Modifica il crontab dell'utente chiamato charles. L'opzione -u richiede i privilegi di amministratore, quindi il comando viene eseguito usando sudo.

sudo crontab -l -u jeff

Visualizza il crontab dell'utente jeff.

sudo crontab -r -u sabbioso

Rimuovere il crontab dell'utente sandy.

Voci crontab

I seguenti sono esempi di voci che potrebbero essere incluse in un crontab.

Esegui lo script della shell /home/melissa/backup.sh il 2 gennaio alle 6:15:

15 6 2 1 * /home/melissa/backup.sh

Giorni e mesi possono essere elencati per nome (lunedì) o abbreviazione (gennaio). Gli zeri all'inizio di un numero sono validi, il che può aiutarti a allineare visivamente più voci.

Ad esempio, il prossimo esempio esegue lo stesso script di cui sopra, alle 12:01, ogni lunedì di gennaio:

01 00 * Jan lunedì /home/melissa/backup.sh

Esegui /home/carl/hourly-archive.sh ogni ora, ogni ora, dalle 9:09 (00:6) alle 18:00 (XNUMX:XNUMX), tutti i giorni:

00 09-18 * * * /home/carl/hourly-archive.sh

Come sopra, ma eseguilo ogni venti minuti:

* / 20 09-18 * * * /home/carl/hourly-archive.sh

Esegui /home/wendy/script.sh ogni lunedì, alle 9:6 e alle XNUMX:XNUMX:

0 9,18 * * Mon /home/wendy/script.sh

Esegui / usr / local / bin / backup alle 10:30, tutti i giorni feriali:

30 22 * ​​* lun, mar, mer, gio, ven / usr / local / bin / backup

Comandi correlati

at - Pianifica l'esecuzione di un comando in un determinato momento.

Pagine utili:

Informazioni sul formato .do

Lascia un commento