如何通过linux中的唯一进程名获取pid?

时间:2017-12-01 11:27:45

标签: linux shell

我在服务器MyProgramMyProgramTest上运行了两个java程序。

ps -ef | grep -i java

root       505 17711  0 16:54 pts/4    00:00:00 grep -i MyProgram
root     16450 16448 99 16:46 pts/4    00:07:29 java MyProgram
root     16473 16471 99 16:46 pts/4    00:07:29 java MyProgramTest

我想使用以下命令在那里搜索pid

ps ax | grep -v grep | grep MyProgram

它应该给我PID 16450,但它同时给出了

16450 pts/4    Sl     9:19 java MyProgram
16473 pts/4    Sl     9:19 java MyProgramTest

预期产出:

16450 pts/4    Sl     9:19 java MyProgram

如何通过linux中的唯一进程名称获取PID?

4 个答案:

答案 0 :(得分:2)

ps ax | grep -v grep | grep -w "MyProgram"

ps ax | grep -v grep | grep "\MyProgram\b"

答案 1 :(得分:1)

你可以使用,

ps ax | grep -v grep | grep -w  MyProgram

-w用于全字匹配。但是,它也会匹配MyProgram或MyProgram Hello等内容。

答案 2 :(得分:0)

为了避免像grep -v grep这样的技巧,最好使用pgrep

pgrep --exact MyProgram

答案 3 :(得分:0)

后缀$,即;进程名称以" MyProgram",

结尾
$ ps -ef |grep MyProgram$