在 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/user
lsof
命令(高级)sudo lsof -p <PID> | grep cwd
lsof
可列出进程打开的文件,cwd
即当前目录。bash
sudo lsof -p 1234 | grep cwd
输出:
bash 1234 user cwd DIR /home/user
pstree
结合 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
。