webentwicklung-frage-antwort-db.com.de

PID des Prozesses in Shell Script abrufen

Ich schreibe ein Shell-Skript und möchte die PID eines Prozesses mit dem Namen "ABCD" erhalten. Was ich gemacht habe war:

process_id=`/bin/ps -fu $USER|grep "ABCD"|awk '{print $2}'`

Dies erhält die PID von zwei Prozessen, d. H. Von Prozess ABCD und dem GREP-Befehl selbst. Was ist, wenn ich nicht die PID von GREP ausführen lassen möchte und die PID nur vom ABCD-Prozess will?

Bitte vorschlagen.

12
Mayank Jain

Grep einfach Grep selbst!

process_id=`/bin/ps -fu $USER| grep "ABCD" | grep -v "grep" | awk '{print $2}'`
34
blue

Haben Sie versucht, pidof ABCD zu verwenden?

22
wizard

Es ist sehr geradlinig.ABCDsollte durch Ihren Prozessnamen ersetzt werden. 

#!/bin/bash

processId=$(ps -ef | grep 'ABCD' | grep -v 'grep' | awk '{ printf $2 }')
echo $processId

Manchmal müssen SieABCDdurch den Namen der Software ersetzen. Beispiel - Wenn Sie ein Java-Programm wie Java -jar TestJar.jar & ausführen, müssen SieABCDdurch TestJar.jar ersetzen.

3
Rejuan

ps hat eine Option dafür:

process_id=`/bin/ps -C ABCD -o pid=`
1

Sie können auch auf grep verzichten und nur awk verwenden.
Verwenden Sie awks Ausdrucksabgleich , um den Prozessnamen zu finden, aber nicht sich selbst. 

/bin/ps -fu $USER | awk '/ABCD/ && !/awk/ {print $2}'
0
Gino Mempin

Sie können diesen Befehl verwenden, um die PID eines bestimmten Prozesses zu ermitteln, und echo $ b, um die PID eines laufenden Prozesses zu drucken

b = ps -ef | grep [f]irefox | awk '{ printf $2 }'

echo $ b

0
Sandeep Singh