插件窝 干货文章 linux查看当前运行进程目录

linux查看当前运行进程目录

进程 目录 bash cwd 346    来源:    2025-04-05

在 Linux 系统中,查看当前运行进程及其工作目录有多种方法,以下是几种常用且详细的解决方案:


方法 1:使用 ps 命令

ps -eo pid,comm,cmd,cwd
  • 参数说明
    • -e:显示所有进程
    • -o:自定义输出格式
    • pid:进程 ID
    • comm:进程名(短格式)
    • cmd:完整命令行
    • cwd:当前工作目录(需 root 权限查看其他用户进程的目录)

示例输出

PID  COMMAND         CMD                         CWD
1234 bash            /bin/bash                   /home/user
5678 nginx           nginx: worker process       /var/www/html

方法 2:通过 /proc 文件系统

每个进程的目录保存在 /proc/<PID>/cwd(符号链接)中:

ls -l /proc/<PID>/cwd

操作步骤: 1. 先获取目标进程的 PID(如通过 pgrep): bash pgrep -f "进程名" 2. 查看该进程的工作目录: bash ls -l /proc/1234/cwd # 替换为实际 PID

示例输出

lrwxrwxrwx 1 user user 0 Mar 1 10:00 /proc/1234/cwd -> /home/user/projects

方法 3:使用 pwdx 命令

pwdx <PID>
  • 直接显示指定进程的工作目录(需提供 PID)。
  • 示例bash pwdx 1234 输出1234: /home/user

方法 4:lsof 命令(高级)

sudo lsof -p <PID> | grep cwd
  • 说明lsof 可列出进程打开的文件,cwd 即当前目录。
  • 示例bash sudo lsof -p 1234 | grep cwd 输出bash 1234 user cwd DIR /home/user

方法 5:pstree 结合 pwdx(树形展示)

pstree -p | grep -o '([0-9]\+)' | grep -o '[0-9]\+' | xargs -I{} sh -c 'echo -n "{}: "; pwdx {}'
  • 作用:递归显示所有进程及其目录(适合排查复杂进程树)。

注意事项

  1. 权限要求:非 root 用户只能查看自己的进程目录。
  2. 容器环境:若进程运行在容器内,需进入容器命名空间或使用 nsenter
  3. 短时进程:某些瞬时进程可能无法捕获,需结合日志分析。

选择合适的方法取决于具体场景,推荐优先使用 ps -eo cwd/proc/<PID>/cwd