通过Linux进程id找到程序路径的三种方法

 更新时间:2025年11月27日 09:42:33   作者:会飞的土拨鼠呀  
这篇文章主要介绍了三种在Linux中通过进程ID(PID)找到程序路径的方法:使用`ls`命令查看`/proc/PID/exe`符号链接,使用`readlink`命令直接获取路径字符串,以及使用`pwdx`命令查看进程的工作目录,需要的朋友可以参考下

在 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找到程序路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Linux创建交换分区方式

    Linux创建交换分区方式

    交换分区(SwapPartition)在Linux系统中作为内存的补充,当物理内存不够用时,将部分不使用的内存数据移动到交换分区中,交换分区大小应依据系统内存大小确定,通常为内存大小的1-2倍,创建交换分区的方法有两种:使用物理分区创建和使用文件创建内存交换文件
    2026-01-01
  • 使用nginx来负载均衡 本文在window与linux下配置nginx实现负载

    使用nginx来负载均衡 本文在window与linux下配置nginx实现负载

    使用nginx来负载均衡,本文在window与linux下配置nginx实现负载
    2010-03-03
  • 简单谈谈centos7中配置php

    简单谈谈centos7中配置php

    windows server2008下搭建PHP运行环境,用IIS+PHP或者phpstudy,或wamp。今天试了试,在linux下搭建php运行环境。感觉还不错。
    2018-06-06
  • 详解Linux搭建DNS服务器

    详解Linux搭建DNS服务器

    这篇文章主要介绍了Linux搭建DNS服务器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 详解linux中nano命令

    详解linux中nano命令

    这篇文章主要介绍了详解linux中nano命令,详细的介绍了nano命令的用法,非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • Linux命令之jq命令处理JSON数据方式

    Linux命令之jq命令处理JSON数据方式

    jq是一个强大的命令行JSON处理器,支持过滤、映射、转换等操作,它可以与管道结合使用,处理复杂的JSON数据,JSON是一种轻量级的数据交换格式,支持对象、数组、字符串、数字等数据类型,jq通过命令行选项和过滤器来操作JSON数据,提供丰富的功能和灵活的语法
    2025-11-11
  • apache启用gzip压缩的实现方法

    apache启用gzip压缩的实现方法

    对于部署在Linux服务器上的PHP程序,在服务器支持的情况下,我们建议你开启使用Gzip Web压缩,以前脚本之家介绍了iis中的开启方法,这篇文章主要介绍了linux中apache的开启方法
    2013-06-06
  • Ubuntu 20.04缺少libssl.so.1.0.0错误的解决方案

    Ubuntu 20.04缺少libssl.so.1.0.0错误的解决方案

    在使用Ubuntu 20.04时,你可能会遇到一些较老的应用程序因缺少libssl.so.1.0.0库而无法运行的问题,这是因为Ubuntu 20.04默认使用的是更新版本的OpenSSL库,本文将介绍如何快速解决这个问题,需要的朋友可以参考下
    2025-11-11
  • Linux服务器被黑以后的详细处理步骤

    Linux服务器被黑以后的详细处理步骤

    作为一个Linux运维工程师,能够清晰地鉴别异常机器是否已经被入侵了显得至关重要,个人结合自己的工作经历,整理了几种常见的机器被黑情况供参考
    2018-01-01
  • ubuntu18.04和ns3.27环境下配置PyViz全过程

    ubuntu18.04和ns3.27环境下配置PyViz全过程

    在Ubuntu 18.04和NS3.27环境下配置PyViz时遇到无法定位软件包的问题,通过增加软件源并更新解决了问题,然后成功安装了交互式Python,重新编译后PyViz被启用
    2025-12-12

最新评论