在 Linux 系统中,查看当前运行进程及其工作目录有多种方法,以下是几种常用且详细的解决方案:
ps 命令ps -eo pid,comm,cmd,cwd
-e:显示所有进程-o:自定义输出格式pid:进程 IDcomm:进程名(短格式)cmd:完整命令行cwd:当前工作目录(需 root 权限查看其他用户进程的目录)示例输出:
PID COMMAND CMD CWD
1234 bash /bin/bash /home/user
5678 nginx nginx: worker process /var/www/html
/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
pwdx 命令pwdx <PID>
bash
pwdx 1234
输出:
1234: /home/userlsof 命令(高级)sudo lsof -p <PID> | grep cwd
lsof 可列出进程打开的文件,cwd 即当前目录。bash
sudo lsof -p 1234 | grep cwd
输出:
bash 1234 user cwd DIR /home/userpstree 结合 pwdx(树形展示)pstree -p | grep -o '([0-9]\+)' | grep -o '[0-9]\+' | xargs -I{} sh -c 'echo -n "{}: "; pwdx {}'
nsenter。选择合适的方法取决于具体场景,推荐优先使用 ps -eo cwd 或 /proc/<PID>/cwd。