Script Bash per controllare lo stato di un processo

Quando si schedulano dei job su cron è opportuno distanziarli tra di loro dal punto di vista temporale, in quanto la sovrapposizione degli stessi potrebbe portare a comportamenti inaspettati. Tale regola andrebbe seguita sempre e comunque, soprattutto se i job si occupano di parsare dei dati e di inserirli dentro un database.

cron, job, parser, ps aux, wc -l, grep, output, gt, bash, script

Dopo questa breve premessa, ecco il codice che utilizzo per il suddetto scopo:

#!/bin/bash

ESEC=`ps aux | grep Parser | wc -l`
if [ $ESEC -gt 1 ]; then #la prima riga e' il grep stesso
echo "Parser is still running.";
exit 0;
fi

Lo scrip in questione è abbastanza semplice. Dapprima lancia un ps aux | grep Parser, dove Parser è il nome del processo di cui voglio controllare lo stato. Se tale processo non è in esecuzione, l’output del comando conterrà solo ed esclusivamente la riga relativa al grep. Dunque, se il numero di righe ricavate mediante un wc -l è strettamente maggiore di uno, vuol dire che una o più istanze del processo è in esecuzione (lo scrip esce). Viceversa, lo scrip continua in quanto nessuna istanza è attualmente attiva.

Alla prossima.

Script Bash per controllare lo stato di un processoultima modifica: 2013-01-21T09:00:00+01:00da nazarenolatella
Reposta per primo quest’articolo