PDA

Visualizza la versione completa : esegui se non in ps


Gaetano Vituzzi
10-03-2006, 18:51
Salve,

volevo fare un crontab che ogni 10 minuti vede se un certo script in esecuzione, se non lo allora lo esegue.

un aiuto?

grazie mille!

cacao74
11-03-2006, 08:41
man ps
man grep
man cut
man awk

fatto questo, vai di

man pidof
man pgrep

ciao

Gaetano Vituzzi
11-03-2006, 11:32
ok, e che non hai fatto uno script per bash. Vediamo se ho capito:



check=no;

if check <> si then

/usr/bin/perl /users/claudio/desktop/script.pl
# come faccio a ritornare l'id del file appena eseguito?
check=si
else

if not ('ps -auxcv | grep 'id dello script perl) then
/usr/bin/perl /users/claudio/desktop/script.pl
end if

end if


questo scritto in un linguaggio maccheronico... ma vorrei sapere se l'idea giusta e soprattutto come si ritorna l'id di un file appena eseguito.

grazie

Gaetano Vituzzi
11-03-2006, 13:17
questa una versione riveduta e corretta del file check.sh il quale viene invocato tramite crontab ogni 5 minuti:



#!/bin/bash
#
# check.sh

check=no

if [ $check != "si" ]
then

id=$(Perl /users/claudio/desktop/file.pl)
check=si

else
if [ ! $(ps -aux | grep '$id') ]
then
Perl /users/claudio/desktop/file.pl
fi
fi


allora, lo script perl file.pl stampa sullo STDOUT il suo PID e poi si mette in ascolto su una porta...

soltanto che quando eseguo:



id=$(Perl /users/claudio/desktop/file.pl)


lo script bash si ferma li e non esegue il resto...

che cosa sbaglio?

U-bahn
11-03-2006, 15:29
rendi eseguibile file.pl
#!/bin/bash
p_id="`pidof file.pl`"
if [ "$p_id" = ""]; then
exec /users/claudio/desktop/file.pl&
fi

exit 0:ciauz:

Gaetano Vituzzi
12-03-2006, 00:01
alla fine ho risolto cos:



#!/bin/bash

id=$(ps -waux | grep 'script.pl' | grep -v grep | awk -F" " '{print $2}')
if [ "$id" = "" ]
then
# echo $id;
exec /users/$USER/desktop/script.pl &
fi
exit 0;


:unz:

Loading