在 Linux 中,如何在指定的进程名中只获得进程 ID?

如何在 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.example
fi
111120 次浏览

你可使用:

ps -ef | grep '[j]ava'

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

pgrep -f java

用这个: ps -C <name> -o pid=

您可以通过管道将输出设置为 awk,以便只打印 PID。例如:

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

这个命令忽略 grep 进程,只返回 PID:

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

为什么不是 Pidof?

pidof <process_name>

它将返回一个匹配进程名称的 pid 列表

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