Получение PID процесса в скрипте оболочки

Я пишу один сценарий оболочки, и я хочу получить PID одного процесса с именем как "ABCD". Я сделал следующее:--2-->

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

Это получает PID двух процессов, т. е. процесса ABCD и самой команды GREP, что делать, если я не хочу, чтобы PID GREP выполнялся, и я хочу PID только процесса ABCD?

пожалуйста, предложите.

5 ответов


просто grep прочь сам grep!

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

вы пытались использовать pidof ABCD ?


его очень прямо вперед. ABCD должно быть заменено на имя процесса.

#!/bin/bash

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

иногда вам нужно заменить ABCD по наименование программного обеспечения. Пример - если вы запускаете java-программу, такую как java -jar TestJar.jar & тогда вам нужно заменить ABCD by TestJar.Джар


ps имеет опцию для этого:

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

вы можете использовать эту команду для grep pid определенного процесса & echo $b для печати pid любого запущенного процесса

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

echo $b