首页 > Python资料 博客日记
linux通过进程pid号查找程序运行文件目录
2024-08-04 09:00:05Python资料围观84次
文章linux通过进程pid号查找程序运行文件目录分享给大家,欢迎收藏Python资料网,专注分享技术知识
linux通过进程pid号查找程序运行文件目录
有时候会遇到这样的情况,能看到程序的进程号,但不知道程序的目录在哪里?可以通过下面的文章了解一下方法。
执行步骤
1. 通过ps命令查询正在运行程序的进程号
$ ps -aux|grep java
root 22684 1 0 Feb23 ? 01:26:21 /data/app/jdk1.8.0_221/bin/java -jar pd-auth-server.jar
2. 通过进程的状态目录查看运行目录
$ cd /proc/22684
# 可以看到该程序所在目录
$ ll cwd
lrwxrwxrwx 1 root root 0 Mar 3 14:29 cwd -> /data/app/ofpay
# 可以看到调用的程序
$ ll exe
lrwxrwxrwx 1 root root 0 Feb 23 17:22 exe -> /data/app/jdk1.8.0_221/bin/java
关于/proc
Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
/proc/{pid}目录下常见的文件介绍
cmdline
启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息;可使用 more /proc/{pid}/cmdline 查看
# 找到一个进程,进到该进程的目录
$ cd /proc/22684
# 查看cmdline,
$ cat cmdline
/data/app/jdk1.8.0_221/bin/java-jarpd-auth-server.jar
cwd
指向当前进程运行目录的一个符号链接;
$ cd /proc/22684
$ ll cwd
lrwxrwxrwx 1 root root 0 Mar 3 14:29 cwd -> /data/app/ofpay
exe
指向启动当前进程的可执行文件(完整路径)的符号链接,通过/proc/N/exe可以启动当前进程的一个拷贝;
$ cd /proc/22684
$ ll exe
lrwxrwxrwx 1 root root 0 Feb 23 17:22 exe -> /data/app/jdk1.8.0_221/bin/java
fd
这是个目录,包含当前进程打开的每一个文件的文件描述符(file descriptor),这些文件描述符是指向实际文件的一个符号链接.
$ cd /proc/22684/fd
$ ll
lr-x------ 1 root root 64 Feb 23 17:22 0 -> /dev/null
l-wx------ 1 root root 64 Feb 23 17:22 1 -> /data/app/ofpay/logs/pd-auth-server.log
l-wx------ 1 root root 64 Feb 23 17:22 10 -> /data/projects/logs/pd-auth-server/service.log
lrwx------ 1 root root 64 Mar 4 06:29 100 -> socket:[135031013]
lrwx------ 1 root root 64 Feb 29 12:26 101 -> socket:[135026985]
lrwx------ 1 root root 64 Feb 25 18:18 102 -> socket:[135027089]
lrwx------ 1 root root 64 Feb 23 17:29 103 -> socket:[134948665]
l-wx------ 1 root root 64 Feb 29 00:43 105 -> /data/projects/logs/pd-auth-server/root.log
lr-x------ 1 root root 64 Feb 29 16:24 106 -> /tmp/+~JF7078255511986524517.tmp
lr-x------ 1 root root 64 Feb 29 16:25 107 -> /tmp/+~JF2639114678156368692.tmp
lr-x------ 1 root root 64 Feb 29 16:25 109 -> /tmp/+~JF4658784623086533328.tmp
l-wx------ 1 root root 64 Feb 23 17:22 11 -> /data/projects/logs/pd-auth-server/controller.log
l-wx------ 1 root root 64 Feb 23 17:22 12 -> /data/projects/logs/pd-auth-server/dao.log
l-wx------ 1 root root 64 Feb 23 17:22 13 -> /data/projects/logs/pd-auth-server/dao.log
l-wx------ 1 root root 64 Feb 23 17:22 14 -> /data/projects/logs/pd-auth-server/dao.log
l-wx------ 1 root root 64 Feb 23 17:22 15 -> /data/projects/logs/pd-auth-server/exception.log
lr-x------ 1 root root 64 Feb 23 17:23 16 -> /data/app/jdk1.8.0_221/jre/lib/charsets.jar
lr-x------ 1 root root 64 Feb 23 17:22 17 -> /data/app/jdk1.8.0_221/jre/lib/jsse.jar
......
maps
当前进程关联到的每个可执行文件和库文件在内存中的映射区域及其访问权限所组成的列表;
$ cd /proc/22684/
$ cat maps
7fe628000000-7fe628001000 r--s 0000e000 fd:01 1057311 /data/app/jdk1.8.0_221/jre/lib/ext/sunec.jar
7fe628001000-7fe628005000 r--s 0003b000 fd:01 1057312 /data/app/jdk1.8.0_221/jre/lib/ext/sunpkcs11.jar
7fe628005000-7fe628020000 r--s 001d4000 fd:01 1057310 /data/app/jdk1.8.0_221/jre/lib/ext/nashorn.jar
7fe628020000-7fe628025000 r--s 002f9000 fd:01 1057418 /data/app/jdk1.8.0_221/jre/lib/charsets.jar
7fe628025000-7fe628038000 r--s 00345000 fd:01 1057600 /data/app/jdk1.8.0_221/jre/lib/resources.jar
7fe628038000-7fe628054000 r--s 00393000 fd:01 1057313 /data/app/jdk1.8.0_221/jre/lib/ext/cldrdata.jar
7fe628054000-7fe628357000 rw-p 00000000 00:00 0
7fe628357000-7fe628531000 r--s 03d88000 fd:01 1057338 /data/app/jdk1.8.0_221/jre/lib/rt.jar
......
stat
当前进程的状态信息,包含一系统格式化后的数据列,可读性差,通常由ps命令使用;
$ more stat
22684 (java) S 1 22683 21860 0 -1 1077944320 942701 0 18 0 225359 293548 0 0 20 0 109 0 892468877 4916166656 175959 18446744073709551615 4194304 419628
4 140723913966976 140723913949632 140626560466759 0 0 3 16800972 18446744073709551615 0 0 17 0 0 0 0 0 0 6294936 6295608 38010880 140723913967629 14072
3913967685 140723913967685 140723913969624 0
status
与stat所提供信息类似,但可读性较好,如下所示,每行表示一个属性信息;
cat status
Name: java
Umask: 0022
State: S (sleeping)
Tgid: 22684
Ngid: 0
Pid: 22684
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 256
Groups: 0
VmPeak: 4800948 kB
VmSize: 4800944 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 998508 kB
VmRSS: 703836 kB
......
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 【Python】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj