通过Linux进程id找到程序路径的三种方法
在 Linux 中,最直接、最可靠的方法是利用 /proc 文件系统。
假设你的进程 ID (PID) 是 12345,你可以使用以下几种方式:
方法一:最直观的方法 (ls)
Linux 的每个进程在 /proc 目录下都有一个对应的文件夹。exe 是一个符号链接,指向实际的二进制文件路径。
ls -l /proc/12345/exe
输出示例:
lrwxrwxrwx 1 root root 0 Nov 26 10:00 /proc/12345/exe -> /opt/app/my_go_program
箭头 -> 后面的 /opt/app/my_go_program 就是该程序的绝对路径。
方法二:最干净的方法 (readlink)
如果你只需要路径字符串(例如用于脚本中),可以使用 readlink 命令,它只输出目标路径,不包含其他信息。
readlink -f /proc/12345/exe
输出示例:
/opt/app/my_go_program
方法三:使用pwdx(注意区别)
有时候你可能想知道程序是在哪个目录下运行的(工作目录),而不是程序文件本身在哪里。这时用 pwdx:
pwdx 12345
输出示例:
12345: /home/user/data
这表示程序虽然可能在 /usr/bin 里,但它是在 /home/user/data 目录下被启动的。
特殊情况提示
Permission denied:
如果进程属于其他用户(如 root),你需要加上 sudo:sudo ls -l /proc/12345/exe
显示 (deleted):
如果你在 Go 程序运行时覆盖了二进制文件(例如发布新版本时直接 cp 覆盖),你可能会看到这样的输出:/opt/app/my_go_program (deleted)
这意味着内存中运行的进程对应的磁盘文件已经被删除了或替换了,但进程仍在运行旧版本的代码。
到此这篇关于通过Linux进程id找到程序路径的三种方法的文章就介绍到这了,更多相关Linux进程id找到程序路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用nginx来负载均衡 本文在window与linux下配置nginx实现负载
使用nginx来负载均衡,本文在window与linux下配置nginx实现负载2010-03-03
Ubuntu 20.04缺少libssl.so.1.0.0错误的解决方案
在使用Ubuntu 20.04时,你可能会遇到一些较老的应用程序因缺少libssl.so.1.0.0库而无法运行的问题,这是因为Ubuntu 20.04默认使用的是更新版本的OpenSSL库,本文将介绍如何快速解决这个问题,需要的朋友可以参考下2025-11-11
ubuntu18.04和ns3.27环境下配置PyViz全过程
在Ubuntu 18.04和NS3.27环境下配置PyViz时遇到无法定位软件包的问题,通过增加软件源并更新解决了问题,然后成功安装了交互式Python,重新编译后PyViz被启用2025-12-12


最新评论