必须通过/proc/pid/exe符号链接反查真实路径:先用pgrep -f "关键词"获取pid,再执行readlink -f /proc/【pid】/exe输出绝对路径;也可用lsof /路径反向定位正在使用该文件的进程。

在银河麒麟V10系统中,当需要确认某个进程实际运行的可执行文件位置(比如排查多版本共存、验证是否被恶意替换、或调试启动异常),不能只依赖ps或top显示的COMMAND字段——它可能只是进程名缩写或shell别名,真实路径常被隐藏。必须通过/proc/PID/exe符号链接反查,这是Linux内核保障的最权威来源。
用readlink直接读取进程可执行路径
打开终端,输入:readlink -f /proc/<strong>【PID】</strong>/exe,将【PID】替换成你要查的目标进程号,例如readlink -f /proc/1234/exe。
这一步会输出该进程启动时使用的绝对路径,如/usr/bin/python3.9或/opt/kylin/app/launcher。注意:若返回No such file or directory,说明该进程已退出,/proc下对应目录消失,需先用ps aux | grep 关键词重新定位存活PID。
先找PID再查路径(常用组合操作)
第一步:用pgrep快速匹配进程名,获取PID列表
执行pgrep -f "nginx"或pgrep -f "java.*tomcat",返回一串数字,每个都是匹配进程的PID。
第二步:对每个PID执行路径解析
把上步得到的PID逐个代入:readlink -f /proc/<strong>【PID】</strong>/exe。例如PID是5678,就运行readlink -f /proc/5678/exe。
第三步:批量处理(适合多个同名进程)
执行for pid in $(pgrep -f "code"); do echo "PID $pid → $(readlink -f /proc/$pid/exe 2>/dev/null)"; done,自动列出所有vscode相关进程的真实路径,省去手动替换。
通过lsof反查正在使用某路径的进程(逆向定位)
方法一:查谁在用指定程序文件
执行lsof /usr/bin/firefox,输出中第一列COMMAND是调用者进程名,第二列PID是进程号,第七列NAME显示被打开的路径——若NAME列正是你输入的路径,说明该进程正在运行这个文件。
方法二:查谁在用某共享库(用于定位隐式依赖)
执行lsof /lib/x86_64-linux-gnu/libssl.so.1.1,结果中所有PID都可能是动态加载了该库的进程,再用readlink确认其主程序路径。
【注意】若提示command not found,先运行sudo apt install lsof安装工具,否则无法执行反查。











