【问题标题】:Finding Process Name without using sudo in Linux在 Linux 中不使用 sudo 查找进程名称
【发布时间】:2015-10-23 17:48:52
【问题描述】:

以下是我熟悉的命令,它们可以执行您可能认为我想要的操作: 为了这个问题; "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 。那么如何找到 Coffee 的 PID,即使它是 Java 应用程序?

【问题讨论】:

    标签: java linux process sudo pid


    【解决方案1】:

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

    ps -efw | grep pn
    

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

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

    编辑:使用 ps 中的 'w' 选项获得宽输出。有时,如果没有“w”,名称就不会出现。

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

    【讨论】:

      【解决方案2】:

      使用这个命令

      ps -ef| grep Coffee
      

      【讨论】:

      • 我似乎遇到的问题是,输出包含在与 Coffee /root/coffee/random.sh 命名相同的任何文件夹中运行的所有 PID
      • 您可以使用 grep 正则表达式来更好地匹配,或者如果它只是一个案例问题,那么使用 -i 选项
      【解决方案3】:

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

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

      样本输出:

      jps
      18027 Java2Demo.JAR
      18032 jps
      18005 jstat
      

      【讨论】:

      • 我得到的是特定 PID 的 Main,而不是特定的应用程序名称,当我这样做时 sudo /sbin/service coffee status 它知道那是什么
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      相关资源
      最近更新 更多