GNU/Linux >> Linux Esercitazione >  >> Linux

Pianificazione di Cron Jobs con Crontab

Cron è un demone di pianificazione che esegue attività a intervalli specificati. Queste attività sono chiamate cron job e sono utilizzate principalmente per automatizzare la manutenzione o l'amministrazione del sistema.

Ad esempio, puoi impostare un cron job per automatizzare attività ripetitive come il backup di database o dati, l'aggiornamento del sistema con le ultime patch di sicurezza, il controllo dell'utilizzo dello spazio su disco, l'invio di e-mail e così via.

I lavori cron possono essere programmati per l'esecuzione di un minuto, un'ora, un giorno del mese, un mese, un giorno della settimana o qualsiasi combinazione di questi.

Cos'è il file Crontab #

Crontab (tabella cron) è un file di testo che specifica la pianificazione dei lavori cron. Esistono due tipi di file crontab. I file crontab a livello di sistema e i file crontab dei singoli utenti.

I file crontab degli utenti sono denominati in base al nome dell'utente e la loro posizione varia in base ai sistemi operativi. Nelle distribuzioni basate su Red Hat come CentOS, i file crontab sono archiviati in /var/spool/cron directory, mentre su Debian e Ubuntu i file sono archiviati nella directory /var/spool/cron/crontabs directory.

Sebbene sia possibile modificare manualmente i file crontab dell'utente, si consiglia di utilizzare il crontab comando.

Il /etc/crontab file e gli script all'interno di /etc/cron.d directory sono file crontab a livello di sistema che possono essere modificati solo dagli amministratori di sistema.

Nella maggior parte delle distribuzioni Linux puoi anche inserire script all'interno di /etc/cron.{hourly,daily,weekly,monthly} directory e gli script verranno eseguiti ogni hour/day/week/month .

Sintassi Crontab e operatori #

Ogni riga nel file crontab dell'utente contiene sei campi separati da uno spazio seguito dal comando da eseguire.

* * * * * command(s)
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

I primi cinque campi possono contenere uno o più valori, separati da una virgola o da un intervallo di valori separati da un trattino.

  • * - L'operatore asterisco indica qualsiasi valore o sempre. Se hai il simbolo dell'asterisco nel campo Ora, significa che l'attività verrà eseguita ogni ora.
  • , - L'operatore virgola consente di specificare un elenco di valori per la ripetizione. Ad esempio, se hai 1,3,5 nel campo Ora, l'attività verrà eseguita alle 01:00, 3:00 e 5:00.
  • - - L'operatore trattino consente di specificare un intervallo di valori. Se hai 1-5 nel campo Giorno della settimana, l'attività verrà eseguita ogni giorno della settimana (dal lunedì al venerdì).
  • / - L'operatore slash consente di specificare valori che verranno ripetuti in un determinato intervallo tra di loro. Ad esempio, se hai */4 nel campo Ora, significa che l'azione verrà eseguita ogni quattro ore. È come specificare 0,4,8,12,16,20 . Invece dell'asterisco prima dell'operatore barra, puoi anche utilizzare un intervallo di valori, 1-30/10 significa lo stesso di 1,11,21 .

File Crontab a livello di sistema #

La sintassi dei file crontab a livello di sistema è leggermente diversa da quella degli utenti crontab. Contiene un campo utente aggiuntivo obbligatorio che specifica quale utente eseguirà il lavoro cron.

* * * * * <username> command(s)

Macro predefinite #

Esistono diverse macro di pianificazione Cron speciali utilizzate per specificare intervalli comuni. Puoi utilizzare queste scorciatoie al posto della specifica della data a cinque colonne.

  • @yearly (o @annually ) - Eseguire l'attività specificata una volta all'anno alla mezzanotte (00:00) del 1° gennaio. Equivalente a 0 0 1 1 * .
  • @monthly - Esegui l'attività specificata una volta al mese a mezzanotte del primo giorno del mese. Equivalente a 0 0 1 * * .
  • @weekly - Esegui l'attività specificata una volta alla settimana a mezzanotte di domenica. Equivalente a 0 0 * * 0 .
  • @daily - Esegui l'attività specificata una volta al giorno a mezzanotte. Equivalente a 0 0 * * * .
  • @hourly - Eseguire l'attività specificata una volta all'ora all'inizio dell'ora. Equivalente a 0 * * * * .
  • @reboot - Esegui l'attività specificata all'avvio del sistema (avvio).

Comando Linux Crontab #

Il crontab comando ti consente di installare, visualizzare o aprire un file crontab per la modifica:

  • crontab -e - Modifica il file crontab o creane uno se non esiste già.
  • crontab -l - Visualizza il contenuto del file crontab.
  • crontab -r - Rimuovi il tuo attuale file crontab.
  • crontab -i - Rimuovi il tuo attuale file crontab con una richiesta prima della rimozione.
  • crontab -u <username> - Modifica il file crontab di altri utenti. Questa opzione richiede i privilegi di amministratore di sistema.

Il comando crontab apre il file crontab utilizzando l'editor specificato da VISUAL o EDITOR variabili di ambiente.

Variabili Crontab #

Il demone cron imposta automaticamente diverse variabili di ambiente.

  • Il percorso predefinito è impostato su PATH=/usr/bin:/bin . Se il comando che stai eseguendo non è presente nel percorso specificato da cron, puoi usare il percorso assoluto del comando o cambiare cron $PATH variabile. Non puoi aggiungere implicitamente :$PATH come faresti con uno script normale.
  • La shell predefinita è impostata su /bin/sh . Per cambiare la diversa shell, usa SHELL variabile.
  • Cron richiama il comando dalla home directory dell'utente. La HOME la variabile può essere impostata nel crontab.
  • L'e-mail di notifica viene inviata al proprietario del crontab. Per sovrascrivere il comportamento predefinito, puoi utilizzare il MAILTO variabile di ambiente con un elenco (separato da virgole) di tutti gli indirizzi e-mail a cui si desidera ricevere le notifiche e-mail. Quando MAILTO è definito ma vuoto (MAILTO="" ), non viene inviata alcuna posta.

Restrizioni Crontab #

Il /etc/cron.deny e /etc/cron.allow files ti permette di controllare quali utenti hanno accesso a crontab comando. I file sono costituiti da un elenco di nomi utente, un nome utente per riga.

Per impostazione predefinita, solo il /etc/cron.deny il file esiste ed è vuoto, il che significa che tutti gli utenti possono utilizzare il comando crontab. Se vuoi negare l'accesso ai comandi crontab a un utente specifico, aggiungi il nome utente a questo file.

Se il /etc/cron.allow esiste solo gli utenti che sono elencati in questo file possono usare il crontab comando.

Se nessuno dei file esiste, solo gli utenti con privilegi di amministratore possono utilizzare crontab comando.

Esempi di Cron Jobs #

Di seguito sono riportati alcuni esempi di cron job che mostrano come pianificare l'esecuzione di un'attività in periodi di tempo diversi.

  • Esegui un comando alle 15:00 tutti i giorni dal lunedì al venerdì:

    0 15 * * 1-5 command
  • Esegui uno script ogni 5 minuti e reindirizza l'output standard a dev null , solo l'errore standard verrà inviato all'indirizzo e-mail specificato:

    [email protected]
    */5 * * * * /path/to/script.sh > /dev/null
  • Esegui due comandi ogni lunedì alle 15:00 (usa l'operatore && tra i comandi):

    0 15 * * Mon command1 && command2
  • Esegui uno script PHP ogni 2 minuti e scrivi l'output in un file:

    */2 * * * * /usr/bin/php /path/to/script.php >> /var/log/script.log
  • Esegui uno script ogni giorno, ogni ora, ogni ora, dalle 8:00 alle 16:00:

    00 08-16 * * * /path/to/script.sh
  • Esegui uno script il primo lunedì di ogni mese, alle 7:00

    0 7 1-7 * 1 /path/to/script.sh
  • Esegui lo script a alle 21:15, il 1 e il 15 di ogni mese:

    15 9 1,15 * * /path/to/script.sh
  • Imposta HOME personalizzata , PATH , SHELL e MAILTO variabili ed eseguire un comando ogni minuto.

    HOME=/opt
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    SHELL=/usr/bin/zsh
    [email protected]
    
    */1 * * * * command

Conclusione #

Cron è un demone che ti consente di pianificare attività a una data e un'ora specifiche.

Sentiti libero di lasciare un commento in caso di domande.


Linux
  1. Pianificazione delle attività con il comando cron di Linux

  2. Pianificazione delle attività di sistema con Cron su Linux

  3. Utilizzando Notifica-Invia con Cron?

  4. Come pianificare i lavori Cron con Crontab

  5. Cron con notifica-invio

Programmazione con cron &At

Spiegazione di Cron Jobs e Crontab su Linux

Capire Crontab in Linux con esempi

Comando Linux crontab per creare e gestire i lavori Cron

Come pianificare i lavori con Cron in Linux

10 utili esempi di cron per pianificare i lavori in Linux