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!
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!
Alla batteria dai retta,balla!
man ps
man grep
man cut
man awk
fatto questo, vai di
man pidof
man pgrep
ciao
slack? smack!
ok, e che non hai fatto uno script per bash. Vediamo se ho capito:
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.codice: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
grazie
Alla batteria dai retta,balla!
questa è una versione riveduta e corretta del file check.sh il quale viene invocato tramite crontab ogni 5 minuti:
allora, lo script perl file.pl stampa sullo STDOUT il suo PID e poi si mette in ascolto su una porta...codice:#!/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
soltanto che quando eseguo:
lo script bash si ferma li e non esegue il resto...codice:id=$(Perl /users/claudio/desktop/file.pl)
che cosa sbaglio?
Alla batteria dai retta,balla!
rendi eseguibile file.plcodice:#!/bin/bash p_id="`pidof file.pl`" if [ "$p_id" = ""]; then exec /users/claudio/desktop/file.pl& fi exit 0
alla fine ho risolto così:
codice:#!/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;
Alla batteria dai retta,balla!