qual è il metodo migliore per controllare se uno script è già in esecuzione?
mi spiego.. ho uno script pippo.sh e quando lo lancio dura almeno 2 minuti, se un'altra persona si collega alla macchina e lo lancia mi distrugge tutto il lavoro, pertanto se lo script è già in esecuzione glielo deve dire..
Avevo fatto una cosa del genere:
Codice: Seleziona tutto
var=`ps -ef | grep pippo| grep -v grep|wc-l`
if [ $var -ne 2 ]; then
echo "Script gia' in esecuzione da un altro utente."
exit
fi
Il problema è che a quanto pare alle volte dice che è in esecuzione ma non è vero, rilanciandolo un secondo dopo parte... provabilmente certe volte forka 2 processi altre volte 1, probabilmente...
Siccome questo script viene richiamato da un altro script ancora più cazzuto se decide di fregare il mio controllo esce e rovina il lavoro anche dell'altro script..
Non so se mi sono espresso bene... ma volevo trovare un modo SICURO affinché lo script venga eseguito solo da un utente (che poi l'utenza è sempre root) e che mi dica SEMPRE la verità se è in esecuzione oppure no....
Grazie