以下是我熟悉的命令,可以执行您认为我想要的操作:
为了这个问题; "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?
答案 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