Vérifier si le processus est en cours d'exécution
Je suis en train de vérifier si un processus est en cours d'exécution. Si elle est en cours d'exécution je veux retourner une valeur " OK " et si ce n'est une valeur de retour de 'Pas OK'. Je ne peux utiliser 'ps' sans autres arguments ci-joint (eg. ps -ef) si c'est le terme correct. Le code que j'ai est:
if ps | grep file; then echo 'OK'; else echo 'NO'; fi
Le problème, c'est qu'il ne recherche pas la procédure exacte et renvoie toujours "OK", je ne veux pas toutes les informations apparaissent, je veux juste savoir si le fichier existe ou pas.
Vous devez vous connecter pour publier un commentaire.
Votre code renvoie toujours "OK", parce que grep se trouve dans la liste des processus ('grep fichier" contient le mot "fichier"). Une solution serait de faire un `grep -e [f]ile' (-e pour l'expression régulière), qui ne trouve pas de lui-même.
De rechange
grep
problèmes réels:évite le problème de l'utilisation
grep
tout à fait.Quand je sais que le pid que je préfère:
Ce sujet "pgrep"?
où xxxx est le pid du binaire en cours d'exécution avec le nom toto. Si toto n'est pas en cours d'exécution, alors pas de sortie.
Aussi:
imprimé "oui" si toto est en cours d'exécution; "non" si ce n'.
voir pgrep page de man.
grep -v grep permet de s'assurer que le résultat que vous obtenez n'est pas le grep énoncé dans l'exécution.
Il y a une solution avec grep ainsi:
Cela fonctionne très bien sous Debian 6, pas sûr d'autres distros.
'{print $11}'
est nécessaire, parce que le système traite grep comme un processus.