7 set 2010

Crontab condizionale

Ho la necessità di schedulare ad un orario prestabilito un job tramite crontab. All'ora prestabilita vorrei però che venga effettuato un controllo aggiuntivo, come l'esistenza di un file, l'attivazione di un servizio, o altro. Come posso fare?

Il job è inserito nella crontab in questo modo:

0 4 * * * sincronizza_dati.sh

il che indica che ogni mattina alle ore 4 verrà eseguito lo script sincronizza_dati.sh. Vorrei però eseguire questo script solamente se il servizio httpd è attivo.

Il mio script sincronizza_dati.sh potrebbe incominciare in questo modo:

#!/usr/bin/bash

if [ `service httpd status  | awk ' { print $3 } '` = "stopped" ]
then
  echo "Servizio disattivato! Usciamo!"
  exit
fi

echo "Servizio attivato! Procediamo con la sincronizzazione"

e spesso questa è la soluzione migliore (specie se la sincronia per andare a buon fine richiede per davvero che il servizio httpd sia attivo).
Ma se non è questo il caso allora meglio mettere la condizione nel crontab: in questo modo diventa anche più chiaro capire in quali condizioni lo script viene eseguito.

L'unico problema è trovare la sintassi giusta per farci stare tutto il comando su di una sola riga. Ad esempio si può scrivere il comando così:

0 4 * * * if [ `service httpd status  | awk ' { print $5 } '` = "running..." ]; then sincronizza_dati.sh; fi

Magari con l'aiuto di qualche script in perl si può avere una soluzione più pulita (non è bello avere una schifezza di awk sulla tabella crontab) ma... di quello ne parleremo nel prossimo disco!

2 commenti:

par ha detto...

Ciao Federico, mi scuso per l'OT totale, ma mi permetto di copiarti un commento che ti avevo inviato sul blog di Paolo Attivissimo, e che forse non hai visto (anche perché è stato sepolto da un migliaio di altri commenti :P)

@ Federico

In riferimento al tuo commento sui grafici delle temperature (http://tinyurl.com/35abkwx), volevo chiederti se per caso sai dove posso reperire ulteriori informazioni.

Sto svolgendo una tesi di laurea sul metodo scientifico, e questa storia mi sembra molto interessante, così che vorrei approfondirla.

Ciao, e grazie molte!

Federico ha detto...

Ciao e grazie per il commento! Sì effettivamente mi sono perso e non avevo visto il tuo! :-)

Premetto che non sono esperto di clima, ma il calcolo numerico è una materia che mi interessa molto.

L'articolo a cui facevo riferimento si trova su "Le Scienze" di Aprile 2009, sono andato a memoria e ci sono delle imprecisioni ma il concetto di fondo è corretto.

Questo articolo è molto interessante per capire come sono state effettuate le rilevazioni delle temperature, come sono stati ottenuti i grafici, e come sono stati corretti.

Il commento finale invece è una mia considerazione personale, si basa sulle mie conoscenze del calcolo numerico, e la ritengo una considerazione condivisibile e molto "neutrale".

Se hai bisogno dell'articolo potrei scansionarlo, e se hai bisogno di altre informazioni fammi sapere.

La mia mail è fthiella@gmail.com

Ciao!