web-dev-qa-db-fra.com

Comment obtenir uniquement l'ID de processus dans spécifier le nom du processus sous Linux?

Comment obtenir uniquement l'ID de processus pour un nom de processus spécifié sous Linux?

ps -ef|grep Java    
test 31372 31265  0 13:41 pts/1    00:00:00 grep Java

Sur la base de l'identifiant du processus, je vais écrire une logique. Alors, comment obtenir uniquement l'ID de processus pour un nom de processus spécifique.

Exemple de programme:

PIDS= ps -ef|grep Java
if [ -z "$PIDS" ]; then
echo "nothing"
else
mail [email protected]
fi
48
openquestion

Vous pouvez utiliser:

ps -ef | grep '[j]ava'

Ou si pgrep est disponible, il vaut mieux utiliser:

pgrep -f Java
61
anubhava

Vous pouvez diriger votre sortie vers awk pour n’imprimer que le PID. Par exemple:

ps -ef | grep nginx | awk '{print $2}'
9439
60
Jose Varez

Utilisez ceci: ps -C <name> -o pid=

33
ventsyv

Cette commande ignore le processus grep et renvoie simplement le PID:

ps -ef | grep -v grep | grep Java | awk '{print $2}'
7
Nabi K.A.Z.

pourquoi ne pas simplement pidof?

pidof <process_name>

il retournera une liste de pids correspondant au nom du processus

https://linux.die.net/man/8/pidof

6
Porunga