pwdx pid可直接查看进程当前工作目录,即启动时所在目录;ls -l /proc/pid/exe获取可执行文件真实路径;cat /proc/pid/cmdline配合tr '\0' '\n'查看原始启动命令。

用 pwdx 快速查看进程工作目录
pwdx 是最直接的方式,它专为这个需求设计,输出简洁明确。运行 pwdx PID 即可得到该进程当前的工作目录(即 cwd 软链接指向的位置)。
注意:这不一定是程序二进制文件所在路径,而是进程启动时所在的目录。很多服务脚本会 cd 到某目录再执行 java 或 ./xxx,所以这里看到的是“启动上下文”,不是“程序本体位置”。
- 如果进程已退出或权限不足,
pwdx会报Permission denied或No such process - 普通用户无法查看其他用户启动的进程,除非有
/proc/PID/的读取权限 - 对容器内进程可能失效,因为 PID 命名空间隔离后,宿主机看到的 PID 和容器内不一致
用 ls -l /proc/PID/exe 获取可执行文件真实路径
这是最可靠的方案。/proc/PID/exe 是一个符号链接,指向进程实际执行的二进制或脚本路径。执行 ls -l /proc/PID/exe 就能拿到绝对路径。
常见现象:
- 看到
ls: cannot read link /proc/1234/exe: No such file or directory→ 进程已退出,或被 ptrace 暂停(如调试中) - 看到
(deleted)后缀 → 可执行文件已被删除,但进程仍在运行(常见于升级后未重启服务) - 看到指向
/bin/bash或/usr/bin/python3→ 实际是 shell 脚本或 Python 脚本启动的,需继续查/proc/PID/cmdline看完整命令行
用 cat /proc/PID/cmdline 查看原始启动命令
/proc/PID/cmdline 存储了进程启动时传入的完整参数,各参数以 <p><code>/proc/PID/cmdline 存储了进程启动时传入的完整参数,各参数以 \0 分隔(不可见空字符)。直接 cat 会显示成一行乱码,建议用 tr '\0' '\n' 格式化查看。
cat 会显示成一行乱码,建议用 tr '<p><code>/proc/PID/cmdline 存储了进程启动时传入的完整参数,各参数以 \0 分隔(不可见空字符)。直接 cat 会显示成一行乱码,建议用 tr '\0' '\n' 格式化查看。' '\n' 格式化查看。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
适用场景:
- Java 进程显示
java作为第一个字段,后面跟着-jar和 jar 包路径 → 那个.jar文件路径就是关键目标 - Node.js 进程显示
node+ 入口 JS 文件路径 → 入口文件即主程序 - Shell 脚本启动的进程,第一项常是
/bin/bash,第二项才是脚本路径(如/opt/myapp/start.sh)
注意子进程和主进程的路径差异
systemd 服务、Java 应用、守护进程等常有父子进程结构。通过 systemctl show --property MainPID 拿到的 PID 往往是父进程(如 bash),而真正干活的是子进程(如 java 或 python)。此时 /proc/MainPID/exe 指向的是启动器,不是业务程序。
查子进程路径的实操步骤:
- 先用
ps --forest -o pid,comm -g MainPID列出整个进程组 - 找最后一级的
java、python、node等进程 PID - 再对那个 PID 执行
ls -l /proc/PID/exe和cat /proc/PID/cmdline | tr '\0' '\n'
忽略这点,就容易在 /proc/1234/exe 看到 /bin/bash 后以为路径找错了——其实得往下翻两层才到真正的 jar 或 py 文件。










