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

如何获取从指定文件夹启动的进程PID?

如何找出从指定文件夹启动的所有进程PID

当然有办法啦!正好有几个实用的方法可以帮你实现pwdx的反向操作——从指定文件夹路径找出所有关联的进程PID,下面给你详细说说:

方法1:用lsof快速过滤

lsof是列出系统打开文件的工具,我们可以用它筛选出**当前工作目录(cwd)**是目标文件夹的进程:

# 列出所有当前工作目录为目标路径的进程,包含PID和其他信息
lsof -d cwd | grep "/path/to/your/folder"

# 如果只想提取去重后的PID,再加一步处理
lsof -d cwd | grep "/path/to/your/folder" | awk '{print $2}' | sort -u
  • -d cwd:指定只关注进程的当前工作目录
  • sort -u:避免同一个进程被重复列出(有些场景下lsof会多次显示同一个PID)

方法2:直接遍历/proc文件系统(无需额外工具)

Linux系统的/proc目录下每个数字命名的文件夹对应一个进程,其中cwd是指向进程当前工作目录的符号链接。我们可以写个简单的shell脚本来遍历匹配:

TARGET_FOLDER="/path/to/your/folder"

for pid in /proc/[0-9]*; do
    # 跳过非进程目录(理论上不会出现,但做个判断更稳妥)
    [ -d "$pid" ] || continue
    # 获取进程当前工作目录的绝对路径,忽略错误输出
    current_cwd=$(readlink -f "$pid/cwd" 2>/dev/null)
    # 对比路径,匹配则输出PID
    if [ "$current_cwd" = "$TARGET_FOLDER" ]; then
        echo "${pid##*/}"
    fi
done

这个方法的优势是不需要安装lsof,完全依赖系统自带的工具,适合轻量化环境。

方法3:用ps命令组合筛选

ps命令可以直接输出进程的当前工作目录,结合grep和awk就能提取PID:

# 输出PID和对应进程的当前工作目录,再过滤目标路径
ps -eo pid,cwd | grep "/path/to/your/folder" | awk '{print $1}'
  • -eo pid,cwd:指定输出列为PID(进程ID)和CWD(当前工作目录)
  • 如果目标路径包含空格,记得给路径加上引号,比如grep "/path/with spaces/folder"

注意事项

  • 如果目标文件夹是符号链接,记得用readlink -f转换成绝对路径再匹配,避免因为链接路径不一致导致漏匹配
  • 有些进程可能会在启动后切换工作目录,这些进程不会被匹配到——我们找的是当前工作目录为目标文件夹的进程,和启动目录是同一个概念(除非进程主动切换了cwd)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:19:47