如何在linux中指定进程名中只获取进程ID?

时间:2014-09-09 17:59:51

标签: linux shell redhat

如何只获取linux中指定进程名的进程ID?

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

根据进程ID,我会写一些逻辑。那么我如何只获取特定进程名称的进程ID。

示例程序:

PIDS= ps -ef|grep java
if [ -z "$PIDS" ]; then
echo "nothing"
else
mail test@domain.com
fi

6 个答案:

答案 0 :(得分:58)

您可以使用:

ps -ef | grep '[j]ava'

或者如果pgrep可用,那么最好使用:

pgrep -f java

答案 1 :(得分:58)

您可以将输出传输到awk以仅打印PID。例如:

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

答案 2 :(得分:31)

使用此:ps -C <name> -o pid=

答案 3 :(得分:6)

此命令忽略grep进程,仅返回PID:

ps -ef | grep -v grep | grep java | awk '{print $2}'

答案 4 :(得分:6)

为什么不只是pidof?

pidof <process_name>

它将返回与进程名称匹配的PID列表

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

答案 5 :(得分:-3)

adb shell procrank | grep TYPE_YOUR_PROCESS_NAME_INSTEAD | awk '{print $1}'