Cron: comandi e utilizzo.

18 Aprile 2013 di In: Sistemistico

Cron è un utility di Unix e Solaris che permette di pianificare l’esecuzione automatica di script o programmi ad intervalli regolari.
Queste pianificazioni vengono comunemente chiamate cron jobs. Crontab (CRON TABle) è un file che contiene la pianificazione dei task che verranno eseguite in un dato momento.

Questo articolo parla di questi aspetti di Cron:
1. Restrizioni
2. Comandi
3. Sintassi
4. Esempio
5. Ambiente
6. Log

1. Restrizioni

E’ possibile eseguire la crontab solo se il vostro nome utente appare nel file /usr/lib/cron/cron.allow. Se il file non esiste, puoi usare crontab se il tuo uusername non appare nel file /usr/lib/cron/cron.deny.
Se cron.deny eiste ed è vuoto, tutti gli utenti possono usare crontab. Se nessuno dei due file esiste, solo root può utilizzare crontab.
(I file di allow/deny consistono di una lista di utenti – uno per riga).

2. Comandi

crontab -e Modifica il tuo file di crontab, o ne crea uno se al momento non esiste.
crontab -l Visualizza il tuo file crontab.
crontab -r Cancella il tuo file crontab.
crontab -v Mostra l’orario in cui è stato modificato l’ultima volta il crontab file. (Questa opzione è disponibile solo su pochi sistemi.)

3. Sintassi

Il file crontab ha 5 campi che permettono di specificare il giorno, la data e l’ora seguiti dal comando che deve essere eseguito in quell’intervallo.

* * * * * comando da eseguire
– – – – –
| | | | |
| | | | +—– giorno della settimana (0 – 6) (0 = domenica)
| | | +——- mese (1 – 12)
| | +——— giorno del mese (1 – 31)
| +———– ora (0 – 23)
+————- minuto (0 – 59)

Il valore che andrà inserito al posto dell’asterisco può avere un * o una lista di elementi separati da virgole. Un elemento può essere sia un numero nel range specificato o due numeri separati da trattino per rappresentare un range (3-6 = 3 4 5 6).
Note
A. ) E’ possibile definire dei pattern di ripetizione come /2 per ogni due minuti o /10 per ogni 10 minuti ma non è supportato da tutti i sistemi operativi.

B.) Si può specificare il giorno in 2 campi: giorno del mese e giorno della settimana. Se entrambi sono specificati, vengono intesi come cumulativi ed entrambe verranno eseguite.

4. Esempio

Una linea del file crontab come quella di seguito cancella i file temporanei da /home/someuser/tmp ogni giorno alle 18:30.

30 18 * * * rm /home/someuser/tmp/*

Cambianto i parametri come di seguito cambierà la schedulazione secondo cui viene eseguito:
min hour day/month month day/week Execution time
30 0 1 1,6,12 * 00:30 Hrs on 1st of Jan, June & Dec.
0 20 * 10 1-5 8.00 PM every weekday (Mon-Fri) only in Oct.
0 0 1,10,15 * * midnight on 1st ,10th & 15th of month
5,10 0 10 * 1 At 12.05,12.10 every Monday & on 10th of every month

Note: Se inserite inavvertitamente il comando crontab senza argomenti, non tentate di uscire con CTRL + D perché cancellerà tutto il contenuto del crontab.
Ivence usate CTRL + C.

5. Ambiente

Cron esegue il comando dalla user home con la shell (/usr/bin/sh) e fornisce un ambiente di default per ogni shell, definendo:
HOME=user home
LOGNAME=user name
PATH=/usr/bin:/usr/sbin:.
SHELL=/usr/bin/sh

Gli utenti che desiderano eseguire il loro .profile devono farlo esplicitamente in una crontab entry o in uno script richiamato dalla entry.

6. Log

Per avere il log delle operazioni eseguite durante l’esecuzione di una entry :

30 18 * * * rm /home/utente/tmp/* > /home/utente/cronlogs/clean_tmp_dir.log

Nessun commento presente