Vérifiez si le programme est en cours d'exécution avec le shell bash script?
Ceci est un exemple d'un script bash qui vérifie pour certains processus en cours d'exécution (daemon ou service) et ne des actions spécifiques (reload, envoie de mail) si il n'y a pas de tels processus en cours d'exécution.
check_process(){
# check the args
if [ "$1" = "" ];
then
return 0
fi
#PROCESS_NUM => get the process number regarding the given thread name
PROCESS_NUM='ps -ef | grep "$1" | grep -v "grep" | wc -l'
# for degbuging...
$PROCESS_NUM
if [ $PROCESS_NUM -eq 1 ];
then
return 1
else
return 0
fi
}
# Check whether the instance of thread exists:
while [ 1 ] ; do
echo 'begin checking...'
check_process "python test_demo.py" # the thread name
CHECK_RET = $?
if [ $CHECK_RET -eq 0 ]; # none exist
then
# do something...
fi
sleep 60
done
Toutefois, il ne fonctionne pas. J'ai eu "ERREUR: Ordures option." pour le ps
de commande. Quel est le problème avec ces scripts? Merci!
Je vous recommandons d'utiliser
Le morceau de code: "si [ $PROCESS_NUM -eq 1]; then return 1; else return 0; fi" n'est pas très idiomatique. C'est beaucoup plus propre de tout simplement la fin de la fonction avec "test $PROCESS_NUM -ne 1". La valeur de retour de la dernière commande sera retournée par la fonction.
en fonction de vos besoins, il peut y avoir de meilleurs outils pour le travail. En particulier, si vous avez besoin de s'assurer qu'un processus est en cours, découvrez les
Voir aussi askubuntu.com/a/157900/13975 et surtout l'explication liée de celui-ci: mywiki.wooledge.org/......
pgrep -f "$1"
au lieu de ps | grep | grep
combo.Le morceau de code: "si [ $PROCESS_NUM -eq 1]; then return 1; else return 0; fi" n'est pas très idiomatique. C'est beaucoup plus propre de tout simplement la fin de la fonction avec "test $PROCESS_NUM -ne 1". La valeur de retour de la dernière commande sera retournée par la fonction.
en fonction de vos besoins, il peut y avoir de meilleurs outils pour le travail. En particulier, si vous avez besoin de s'assurer qu'un processus est en cours, découvrez les
supervise
programme de daemontools
Voir aussi askubuntu.com/a/157900/13975 et surtout l'explication liée de celui-ci: mywiki.wooledge.org/......
OriginalL'auteur Charlie Epps | 2011-10-10
Vous devez vous connecter pour publier un commentaire.
Si vous voulez exécuter cette commande, vous devrez probablement changer de:
:
$ ps aux | grep xchat | grep -v "grep" | awk '{print $2}' | xargs echo "ProcessID was:" ProcessID was: 21489
OriginalL'auteur paxdiablo
Vous pouvez obtenir presque tout dans
PROCESS_NUM
avec ce one-liner:si vous êtes à la recherche d'un correspondance partielle, c'est à dire le programme est nommé foobar et vous voulez que votre
$1
être juste foo vous pouvez ajouter la-f switch
à pgrep:Mettre tous ensemble votre script peut être retravaillé comme ceci:
De course, il devrait ressembler à ceci:
Espérons que cette aide!
Utiliser des guillemets ou
[[
dans[
pgrep -f $1` ]`, s'il vous plaît...Que faire si j'ai besoin de l'utiliser pour chercher un script python? Cela fonctionnera si je cherche "python", mais pas si je cherche "myscript.py"
dépend. Si c'est 2 utilisateurs différents, ils ne peuvent pas voir les uns les autres processus dans le ps.
troupeau pour s'assurer l'exclusivité.
OriginalL'auteur slm
OriginalL'auteur holysmoke