Linux如何查询正在运行的进程对应的可执行文件所在目录

 更新时间:2025年10月13日 15:30:33   作者:weixin_30777913  
在Linux系统中,管理和监控进程是系统管理员和开发者的常见任务,本文将整理Linux查询正在运行的进程的多种方法,有需要的可以了解下

在Linux系统中,管理和监控进程是系统管理员和开发者的常见任务。了解如何查询正在运行的进程对应的可执行文件所在目录,对于调试、性能分析或安全审计至关重要。本文将详细介绍几种有效的方法,帮助您快速定位进程的可执行文件路径。

方法一:通过/proc文件系统查询

1. 获取进程PID

首先,您需要获取目标进程的进程ID(PID)。可以使用以下命令:

# 查找nginx进程的PID
ps -ef | grep nginx | grep -v grep

# 或者使用pgrep命令(更简洁)
pgrep nginx

2. 查看exe符号链接

每个进程在/proc目录下都有一个以其PID命名的子目录,其中的exe符号链接指向该进程对应的可执行文件:

# 查看PID为9900的进程的可执行文件路径
ls -l /proc/9900/exe

# 输出示例:
# lrwxrwxrwx 1 root root 0 Jan 15 10:30 /proc/9900/exe -> /usr/sbin/nginx

注意:/proc/<PID>/exe显示的是可执行文件的绝对路径,这是最直接和准确的方法。

方法二:检查进程工作目录

1. 查看cwd符号链接

/proc/<PID>/cwd符号链接指向进程的当前工作目录:

# 查看PID为12597的进程的工作目录
ls -l /proc/12597/cwd

# 输出示例:
# lrwxrwxrwx 1 user user 0 Jan 15 10:35 /proc/12597/cwd -> /var/www/html

2. 使用pwdx命令

Linux提供了专门的pwdx命令来查看进程工作目录:

# 使用pwdx查看进程工作目录
pwdx 12597

# 输出示例:
# 12597: /var/www/html

方法三:查看环境变量和命令行参数

1. 查看环境变量

/proc/<PID>/environ文件包含了进程的环境变量:

# 查看进程的环境变量
cat /proc/9900/environ | tr '\0' '\n'

# 或者使用更易读的方式:
strings /proc/9900/environ

环境变量中可能包含PATH信息,但请注意这显示的是进程启动时的环境,不一定反映当前系统的环境变量。

2. 查看命令行参数

/proc/<PID>/cmdline文件记录了进程启动时的命令及参数:

# 查看进程的启动命令
cat /proc/9900/cmdline | tr '\0' ' '

# 输出示例:
# nginx: master process /usr/sbin/nginx -g daemon off;

实用脚本示例

为了方便使用,您可以创建一个简单的脚本来同时显示多个信息:

#!/bin/bash

if [ -z "$1" ]; then
    echo "Usage: $0 <process_name>"
    exit 1
fi

PID=$(pgrep "$1" | head -1)

if [ -z "$PID" ]; then
    echo "Process $1 not found"
    exit 1
fi

echo "=== Process Information for $1 (PID: $PID) ==="
echo "Executable path:"
ls -l /proc/$PID/exe
echo -e "\nWorking directory:"
pwdx $PID
echo -e "\nCommand line:"
cat /proc/$PID/cmdline | tr '\0' ' '
echo -e "\n"

保存为process_info.sh并赋予执行权限:

chmod +x process_info.sh
./process_info.sh nginx

权限要求与注意事项

权限限制:您需要对目标进程有访问权限。普通用户只能查看自己的进程,而root用户可以查看所有进程。

进程状态:这些方法只适用于正在运行的进程。如果进程已经终止,对应的/proc目录将不存在。

符号链接特殊性:/proc文件系统中的符号链接有些特殊,直接使用readlink命令可能更可靠:

readlink /proc/9900/exe
readlink /proc/9900/cwd

容器环境:在容器化环境(如Docker)中,这些命令显示的是容器内部的路径,而不是宿主机上的路径。

总结

通过/proc文件系统,Linux提供了丰富的方法来查询进程的详细信息。其中:

最直接的方法:使用/proc/<PID>/exe获取可执行文件的绝对路径

工作目录查询:使用/proc/<PID>/cwd或pwdx命令

辅助信息:通过环境变量和命令行参数了解进程的启动上下文

到此这篇关于Linux如何查询正在运行的进程对应的可执行文件所在目录的文章就介绍到这了,更多相关Linux查询进程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • CentOS 7.x 安装 ZSH 终端的配置方法

    CentOS 7.x 安装 ZSH 终端的配置方法

    这篇文章主要介绍了CentOS 7.x 安装 ZSH 终端的配置方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • centos 7中设置tomcat 7为系统服务的方法详解

    centos 7中设置tomcat 7为系统服务的方法详解

    这篇文章主要给大家介绍了关于在centos 7中设置tomcat 7为系统服务的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来跟着小编一起学习学习吧。
    2017-06-06
  • 在Linux中使用iptables设置端口转发的步骤

    在Linux中使用iptables设置端口转发的步骤

    在Linux系统中,iptables是一个非常强大的防火墙工具,用于管理网络数据包的过滤和转发,它允许系统管理员根据特定的规则来控制数据包的流动,本文给大家介绍了如何在 Linux 中使用 iptables 设置端口转发,需要的朋友可以参考下
    2024-05-05
  • linux防火墙如何查看状态firewall

    linux防火墙如何查看状态firewall

    这篇文章主要介绍了linux防火墙如何查看状态firewall问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Linux中配置双机SSH信任 操作说明

    Linux中配置双机SSH信任 操作说明

    本篇文章小编为大家介绍,Linux中配置双机SSH信任 操作说明。需要的朋友参考下
    2013-04-04
  • CentOS 6 启动流程详细介绍

    CentOS 6 启动流程详细介绍

    这篇文章主要介绍了CentOS 6 启动流程详细介绍的相关资料,这里对centos 启动进行了分析,希望能帮助到大家理解centos 启动流程,需要的朋友可以参考下
    2017-07-07
  • Linux 出现telnet: 127.0.0.1: Connection refused错误解决办法

    Linux 出现telnet: 127.0.0.1: Connection refused错误解决办法

    这篇文章主要介绍了Linux 出现telnet: connect to address 127.0.0.1: Connection refused错误解决办法的相关资料,需要的朋友可以参考下
    2017-05-05
  • 解决linux环境下时区无法设置的问题

    解决linux环境下时区无法设置的问题

    在本篇文章里小编给大家整理的是关于解决linux环境下时区无法设置的问题的方法,需要的朋友们学习下。
    2020-01-01
  • Easypanel免费的VPS主机面板 可跨平台Linux和Windows

    Easypanel免费的VPS主机面板 可跨平台Linux和Windows

    Easypanel是一款免费的功能强大集开通虚拟主机,ftp空间,数据库等功能为一体的主机控制面板,具备跨平台(windows,linux),安全稳定、操作简便等特点,感兴趣的小伙伴们可以关注一下
    2017-07-07
  • linux操作之重定向问题

    linux操作之重定向问题

    这篇文章主要介绍了linux操作之重定向问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论