You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何列出指定目录下所有运行进程的PID?

嘿,这个需求我经常碰到,给你分享几个实用的方法,包括优化你想到的那个命令,还有更简洁的替代方案:

方法1:优化你原本的命令

你一开始想到的思路没问题,但有个小坑——它可能会把grep自身的进程也列出来。加个排除项就能解决这个问题:

ps -eo pid,args | grep "/home/myname/myapp" | grep -v grep | awk '{print $1}' | tr '\n' ' '

简单拆解下每个部分的作用:

  • ps -eo pid,args:列出系统中所有进程的PID和完整命令行参数
  • grep "/home/myname/myapp":筛选出命令行包含目标目录路径的进程
  • grep -v grep:把执行grep的自身进程排除掉
  • awk '{print $1}':提取输出结果里的第一列(也就是PID)
  • tr '\n' ' ':把每个PID单独一行的格式转换成空格分隔的单行输出

方法2:用pgrep更高效实现

pgrep是专门用来查找进程PID的工具,用它来实现这个需求会更简洁,不需要组合多个命令:

pgrep -f "/home/myname/myapp"

如果希望结果像你原来的命令那样在一行用空格分隔,只需要再加个tr转换格式:

pgrep -f "/home/myname/myapp" | tr '\n' ' '

这里的-f参数是关键,它让pgrep匹配完整的命令行内容,而不是只匹配进程名,刚好适配我们按目录路径筛选的场景。

方法3:可选工具pids(部分系统可用)

有些Linux发行版会自带pids工具,它可以直接根据进程的路径来查找PID,用法超简单:

pids /home/myname/myapp

不过要注意,这个工具不是所有系统都预装的,所以前两个方法的通用性更强。

内容的提问来源于stack exchange,提问作者Nicholas DiPiazza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:01:41