Controllare l'esistenza di un processo

Paolo Pisati flag a gufi.org
Gio 20 Set 2007 12:36:32 CEST


Ok, come dice il subj mi sono imbattuto nella necessita di creare
uno script che controlli l'esistenza o meno di un dato processo.

Ok, il compito mi e' sembrato subito semplice finche' non mi sono
imbattuto in alcuni fastidiosi particolari.
La prima soluzione che mi e' venuta in mente per cercare se
un processo e' attivo o meno, consiste in un ps in pipe a diversi grep 
con tanto di awk finale:

ps -auxww | grep $PARAM | grep -v grep | grep -v /bin/sh | awk '{print $2}'

Alcuni dettagli:

-$PARAM e' la stringa corrispondente al processo da cercare
-il 'grep -v grep' e' stato messo per evitare che il comando di grep
 precedente appaia nell'output
-il 'grep -v /bin/sh' l'ho messo perche', benche' tale comando se
 eseguito in modo interattivo da shell fa il suo dovere, nel momento
 in cui viene lanciato all'interno di uno script sh, mi genera diversi 
 processi che contengono la stringa $PARAM, falsando la ricerca
-l'awk finale serve a selezionare il campo del ps che mi interessa

Ora, le cose mi danno piu' fastidio sono:

-l'impossibilita' di cercare processi che contengono la stringa '/bin/sh' come comando
-l'idea di dover concantenare diversi tool per estrarre qualcosa di cosi' semplice

Sicuro che molti di voi hanno affrontato lo stesso problema e l'hanno risolto
in modo positivo, porgo cordiali saluti e aspetto di leggere le vostre risposte :)

bye,
P.

ps si, il file contenente il PID del processo da monitorare l'ho subito
   contemplata, ma data la miriade di varibli in gioco (PID non presente, PID 
   erroneo, necessita di modificare tutti gli script di lancio dei demoni per 
   far creare tale PID, etcetc) per ora l'ho scartata...


Maggiori informazioni sulla lista esperti