我正在编写一个shell脚本,我想获得名为“ABCD”的一个进程的PID。 我做的是:
process_id=`/bin/ps -fu $USER|grep "ABCD"|awk '{print $2}'`
这得到两个进程的PID,即进程ABCD和GREP命令本身,如果我不想获得执行GREP的PID,并且只想要ABCD进程的PID,该怎么办?
请build议。
只是grep走grep本身!
process_id=`/bin/ps -fu $USER| grep "ABCD" | grep -v "grep" | awk '{print $2}'`
您是否尝试过使用pidof ABCD
?
它非常直接。 ABCD应该被你的进程名称替换。
#!/bin/bash processId=$(ps -ef | grep 'ABCD' | grep -v 'grep' | awk '{ printf $2 }') echo $processId
有时需要用软件名称替换ABCD 。 例子 – 如果你运行一个像java -jar TestJar.jar &
这样的java程序java -jar TestJar.jar &
那么你需要用TestJar.jar替换ABCD
你可以使用这个命令来grep特定进程的pid和echo $ b来打印正在运行的进程的pid
b = ps -ef | grep [f]irefox | awk '{ printf $2 }'
ps -ef | grep [f]irefox | awk '{ printf $2 }'
echo $ b
PS有一个选项:
process_id=`/bin/ps -C ABCD -o pid=`