Come eseguire un cronjob ogni 30 secondi su Linux

Cerca

Di default, il cron job scheduler di Linux non supporta la definizione di uno scheduling per secondi. Infatti l’unità minima specificabile in cron è 1 minuto. Tuttavia, è possibile applicare alcuni semplici workaround per avere i propri task con uno scheduling impostato in secondi.

Sintassi di crontab

Sintatticamente un cronjob è definito nel seguente modo

				
					A B C D E USERNAME /path/to/command
				
			
  • A → minuti
  • B → ore
  • C →giorni
  • D →mesi
  • E →giorni della settimana

 

USERNAME è lo user con il quale invocare il comando

/path/to/command è il path completo al comando oggetto di scheduling

Addizionalmente possono essere utilizzati i seguenti operatori:

(,) → specifica di una lista di valori
– → specifica di un range di valori
/ → definizione di uno step value

Per esempio, il seguente definisce un cronjob che viene lanciato ogni secondo giorno del mese alle 4:30 PM

				
					30 16 2 * * /path/to/script.sh
				
			

Vediamo ora come schedulare un cronjob per essere eseguito ogni 30 secondi.

Come eseguire un cronjob ogni 30 secondi

Sostanzialmente, quello che faremo è creare due entries in crontab. Con la prima definiamo un job che esegue il comando ogni minuto, mentre la seconda entry eseguirà prima il comando di sleep per aggiungere un delay di 30 secondi e successivamente invocare lo stesso comando della prima entry. Vediamo ora come realizzarlo.

Aprire crontab

Apriamo il terminale e lanciamo il seguente comando per aprire crontab:

				
					crontab -e
				
			
Aprire crontab

Aggiungiamo le seguenti righe nella nostra crontab:

				
					* * * * * /usr/bin/date >> /tmp/date.log
* * * * * sleep 30; /usr/bin/date >> /tmp/date.log
				
			

Nel nostro esempio utilizziamo il comando date. Sostituirlo con il comando desiderato per adattarlo ad ogni necessità.

Verificare l'esecuzione corretta dello scheduling

Lanciamo quindi il seguente comando per verificare il corretto funzionamento del nostro scheduling:

				
					tail -f  /tmp/date.log
				
			

Noteremo che ogni 30 secondi viene aggiunta una riga al nostro file di log e questo conferma l’efficacia del workaround che abbiamo applicato.

Come eseguire un cronjob ogni 10 secondi

Secondo la logica definita qui sopra, possiamo estendere il nostro workaround per far eseguire a crontab un task ogni 10 secondi. In questo caso la nostra crontab dovrà essere popolata nel seguente modo:

				
					* * * * * /usr/bin/date >> /tmp/date.log
* * * * * sleep 10; /usr/bin/date >> /tmp/date.log
* * * * * sleep 20; /usr/bin/date >> /tmp/date.log
* * * * * sleep 30; /usr/bin/date >> /tmp/date.log
* * * * * sleep 40; /usr/bin/date >> /tmp/date.log
* * * * * sleep 50; /usr/bin/date >> /tmp/date.log
				
			

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

Most Recent

Come cambiare il server DNS su Ubuntu

Cambiare il server DNS usato da Ubuntu è un’operazione piuttosto semplice, ma che comunque deve essere condotta con attenzione. Vediamo quindi in questo articolo come

Partners