【问题标题】:Can I find the PID of a running process using only ls? [closed]我可以仅使用 ls 找到正在运行的进程的 PID 吗? [关闭]
【发布时间】:2014-02-09 00:40:04
【问题描述】:

如何在 bash 中使用 ls 找到正在运行的进程的 PID?假设我知道进程的名称。使用ps 会很容易。如果我要搜索 Firefox,它只会是 ps ax | grep firefox。但是为了争论,假设我不能这样做,我必须使用ls

任何帮助都会很棒!

【问题讨论】:

  • 为什么你认为ls 是这里的解决方案?
  • 当我尝试打开一罐豆子时,我认为我可能无法使用胡佛
  • 我知道ls显然不是解决方案,它只是我必须使用的。
  • @EdHeal 可怕的比喻,吸尘器实际上可能能够打开一罐垃圾箱。
  • @broSlow - 我现在只是想象你,胡佛和一罐豆子在厨房里打架。我要把钱花在赢豆上:-)

标签: linux bash pid ls


【解决方案1】:

/proc 文件系统对每个进程都有一个目录条目。每个目录都包含一个文件,该文件是可执行文件的符号链接。例如,如果您可以使用 grep 过滤列表,您可以从路径中获取 PID。例如:

$ ls -l /proc/*/exe | grep firefox
lrwxrwxrwx 1 joni     joni     0 Feb  9 01:39 /proc/8321/exe -> /usr/lib/firefox/firefox
lrwxrwxrwx 1 joni     joni     0 Feb  9 00:09 /proc/8825/exe -> /usr/lib/firefox/plugin-container

【讨论】:

  • 正是我想要的。谢谢!
  • 我讨厌这些问题如此被否决。这实际上是一个很有教育意义的问题。我认为内核以这种方式通过文件系统暴露自己是非常有趣的。有时,偏离既定方式和“最佳实践”是学习/发现新事物的最佳方式。
  • @ThorX89 /proc 列出特定系统上的进程信息是一个教育要点。但是ls 在这里仍然完全没有意义,不一定会找到所有进程名称(做类似阅读/proc/*/cmdline 会更好)。并且愿意打赌,如果 op 解释了他为什么需要,而不是仅仅说“我需要 ls 来做这个”,那么这个问题会得到更少的反对票。
  • 我愿意打赌 OP 需要使用 ls 的原因(并且不会说为什么)是因为他有一个家庭作业,因为它试图教他 procfs。跨度>
【解决方案2】:

您可以执行以下解决方案::)

ls -l /proc/*/exe | grep firefox | cut -d/ -f3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-19
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    相关资源
    最近更新 更多