在Linux中不使用sudo查找进程名称

时间:2015-10-23 17:48:52

标签: java linux process sudo pid

以下是我熟悉的命令,可以执行您认为我想要的操作: 为了这个问题; "pn" = "process name"

pgrep pn
sudo /sbin/service pn status
ps -fC pn

我遇到的问题是Java。 pgrep Java会给我所有java进程的PID。但是如果我知道java应用程序的确切名称,那就让它称之为咖啡,pgrep Coffee什么都不给我。但是,sudo /sbin/service Coffee status会给我确切的咖啡PID。问题是我不想要,也不能在我写的脚本中使用sudo。那么即使它是一个Java应用程序,我如何才能找到咖啡的PID?

3 个答案:

答案 0 :(得分:0)

我有同样的问题。可能有更好的答案,但我做的是这个

ps -efw | grep pn

然后我可以使用awk来获取我想要的列,以便它只是pid。

ps -efw | grep pn | awk '{print $2}'

编辑:使用' w' ps中的选项可以获得宽输出。如果没有' w'那里。

  

w宽输出。使用此选项两次以获得无限宽度。

答案 1 :(得分:0)

使用此命令

ps -ef| grep Coffee

答案 2 :(得分:0)

您可能希望查看JPS(Java Process Status)工具。我不记得它是否带有运行时环境。它列出了所有当前运行的java进程,它们的PID以及Java应用程序的名称。您可以解析输出以获取您正在寻找的值。

http://docs.oracle.com/javase/7/docs/technotes/tools/share/jps.html

示例输出:

jps
18027 Java2Demo.JAR
18032 jps
18005 jstat