Linux怎么查看具体的进程执行路径详细信息

大晨酱_3816

大晨酱_3816

2026-08-11

554人浏览

原创

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

linux怎么查看具体的进程执行路径详细信息

怎么直接拿到进程的绝对可执行路径

最可靠的方式是读 /proc/<pid>/exe</pid>,不是靠 ps 或 which 猜。因为 ps 只显示命令名(比如 python),而实际可能是 /home/user/.pyenv/versions/3.11.9/bin/python;which python 查的是当前 shell 的 $PATH,跟进程无关。

  • 先用 pgrep -f your_keyword 或 ps -ef | grep your_keyword 拿到 PID
  • 再运行 readlink -f /proc/<pid>/exe</pid> —— 一行命令直接输出解析后的绝对路径
  • 如果看到输出末尾带 (deleted),说明二进制文件已被删,但进程还在跑,路径仍有效
  • ls -l /proc/<pid>/exe</pid> 也能看,但要自己解析箭头右边的内容,不如 readlink -f 直接

为什么只看 exe 不够,还得查 cmdline 和 cwd

知道程序本体在哪,不等于知道它在跑什么、从哪启动、依赖哪些配置。这三个字段必须一起看:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • cat /proc/<pid>/cmdline | tr '\0' ' '</pid>:还原完整启动命令,比如 /usr/bin/node /var/www/app/server.js --port=3000
  • readlink -f /proc/<pid>/cwd</pid>:确认当前工作目录,影响相对路径加载(如 config.json 是否能被找到)
  • pwdx <pid></pid> 是个快捷替代,但不支持僵尸进程,且某些内核版本对特权进程返回空
  • 注意:/proc/<pid>/cmdline</pid> 对僵尸进程为空;/proc/<pid>/cwd</pid> 对 init 或容器 init 进程可能不可读

用 fuser -v 快速反查路径归属哪个进程

当你只知道一个路径(比如 /var/log/nginx/access.log)被谁占着,想反推是哪个进程在写,fuser -v 比先找 PID 再查 /proc 更快:

  • 普通用户运行 fuser -v /path 只能看到自己的进程;必须加 sudo fuser -v /path 才能看见系统级进程(如 rsyslog、nginx)
  • ACCESS 列里的 txt 表示该进程正以可执行方式运行这个文件;cwd 表示这是它的当前工作目录;mem 表示 mmap 了该文件
  • 查挂载点(如 /mnt/data)时,建议加 -m 参数:sudo fuser -v -m /mnt/data,避免漏掉子目录下的访问进程
  • 如果输出里出现 kernel 作为 PID,说明是内核级操作(如 ext4 journal 写入),不能 kill,得从上层服务入手

别踩这些坑:常见误判和权限陷阱

很多“查不到路径”的问题,其实不是命令不会用,而是权限或场景理解错了:

  • lsof -p <pid></pid> 能列打开的文件,但它不保证显示 exe 路径——尤其对 setuid 进程或容器内进程,lsof 可能权限不足或信息受限
  • ps -f -p <pid></pid> 显示的 CMD 字段会被截断,且不包含绝对路径;ps e -p <pid></pid> 虽能看环境变量,但 PWD 不一定等于 cwd
  • 容器内进程的 /proc/<pid>/exe</pid> 指向的是容器镜像里的路径(如 /usr/local/bin/python),宿主机上不存在对应文件,别拿宿主机的 which 去比对
  • hidepid=2(常见于某些安全加固系统)会让非 root 用户看不到其他用户的 /proc/<pid></pid> 目录,此时 readlink 会报 No such file or directory,不是路径错,是权限挡住了
真正要确认一个进程“到底跑的是什么”,readlink -f /proc/<pid>/exe</pid> + cat /proc/<pid>/cmdline</pid> + readlink -f /proc/<pid>/cwd</pid> 这三行命令缺一不可。任何只依赖单一工具或只查某一层信息的做法,都容易在多 Python 版本、虚拟环境、容器或 systemd 服务场景下翻车。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux linux教程 linux系统

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4170

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3533

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2753

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6710

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6362

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3673

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3165

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3399

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习