在 Linux 中查看进程对应的路径,常见有几种场景(可执行文件路径、当前工作目录、打开的文件路径等),下面按需求给你总结最常用的方法。
ps 命令ps -p PID -o exe=
或
ps -fp PID
示例:
ps -p 1234 -o exe=
输出:
/usr/bin/nginx
/proc 文件系统(最准确)ls -l /proc/PID/exe
示例:
ls -l /proc/1234/exe
输出:
/proc/1234/exe -> /usr/bin/nginx
✅ 这是最推荐的方法,适用于几乎所有情况
ls -l /proc/PID/cwd
示例:
ls -l /proc/1234/cwd
输出:
/proc/1234/cwd -> /var/log/nginx
cat /proc/PID/cmdline
或
ps -p PID -o args=
示例:
ps -p 1234 -o args=
输出:
nginx: master process /usr/sbin/nginx -g daemon off;
lsoflsof -p PID
只看文件路径:
lsof -p PID | grep REG
/proc/PID/fdls -l /proc/PID/fd
示例:
ls -l /proc/1234/fd
pidof nginx
或
pgrep nginx
然后:
ls -l /proc/$(pidof nginx)/exe
| 需求 | 命令 |
|---|---|
| 可执行文件路径 | ls -l /proc/PID/exe |
| 当前工作目录 | ls -l /proc/PID/cwd |
| 启动命令 | ps -p PID -o args= |
| 打开的文件 | lsof -p PID |
| 查看所有进程路径 | ps -eo pid,exe,cmd |
ps -eo pid,exe,args | grep nginx
如果你有具体场景(比如:Docker 容器里的进程、僵尸进程、systemd 服务、想查“这个端口是哪个程序开的”),可以直接告诉我,我可以给你更精准的命令。