最可靠方式是通过readlink -f /proc/<PID>/exe获取进程绝对路径,因ps仅显示命令名,which/whereis依赖当前环境且不覆盖虚拟环境或自定义路径;辅以/proc/<PID>/cmdline和/proc/<PID>/cwd可完整还原运行上下文。

在银河麒麟系统中定位某个正在运行的进程所对应的可执行文件安装路径,不能只依赖进程名模糊查找,必须结合进程PID与/proc虚拟文件系统精确获取真实路径。
通过 /proc/PID/exe 查看进程绝对路径
第一步:用 ps 或 pgrep 获取目标进程的 PID。例如查看微信进程:pgrep -f wechat
第二步:进入该 PID 对应的 /proc 目录,读取 exe 符号链接:ls -l /proc/【PID】/exe
第三步:终端将输出类似 exe -> /opt/tencent/wechat/wechat 的结果,箭头右侧即为该进程启动时加载的真实可执行文件路径。注意:若进程由 systemd 用户服务启动且使用了 sandbox(如 Flatpak),exe 可能指向 /usr/bin/flatpak 或 /usr/libexec/xdg-document-portal 等代理程序,此时需进一步查其 cmdline。
这一步操作起来很简单,直接把 PID 替换进去就行。但切记不能跳过第一步——PID 错了,后续所有路径都是假的。
通过 lsof 快速确认进程主程序位置
方法一:按进程名搜索(适合已知确切命令名)
执行 sudo lsof -c wechat | grep 'txt',在输出中找 TYPE 为 txt 的行,其 NAME 列即为可执行文件路径。
方法二:按 PID 精确查询(推荐)
先获取 PID,再运行 sudo lsof -p 【PID】 | awk '$4 == "txt" {print $9}',直接提取内存映射的主程序路径。
注意:普通用户执行 lsof 可能看不到其他用户的进程,必须加 sudo;若提示 command not found,请先运行 sudo apt-get install lsof 安装。
从进程命令行反推安装位置
查看进程完整启动命令有助于识别是否为封装脚本或环境代理。
执行 cat /proc/【PID】/cmdline,输出是用 \0 分隔的原始参数,可用 tr '\0' '\n' 格式化:cat /proc/【PID】/cmdline | tr '\0' '\n'
如果第一行显示的是 /usr/bin/python3 或 /bin/sh,说明实际执行的是解释器,真正的“程序”可能是其后紧跟的 .py 或 shell 脚本路径——这个路径才是你要找的安装位置。
这一步容易忽略,很多人看到 python3 就以为路径是 /usr/bin/python3,其实真正业务逻辑在它后面的参数里。

















