/proc的相关知识

简介: `/proc`是Linux的一个伪文件系统,存储内核运行状态和进程信息。它包含以PID命名的子目录,提供对系统硬件、进程详情的查看和内核状态的修改。`/proc/self`是特殊目录,让进程能直接访问其自身信息,无需知道PID。通过`/proc/self/cmdline`、`cwd`、`exe`、`environ`和`maps`等文件,可以获取进程的命令行、工作目录、可执行文件路径、环境变量和内存映射等信息。`maps`显示内存区域和权限,`mem`则提供进程内存映射,但部分区域不可读。

/proc 介绍

/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

简单来讲,/proc 目录即保存在系统内存中的信息。

/proc 目录中包含许多以数字命名的子目录,这些数字表示系统当前正在运行进程的进程号(PID),里面包含对应进程相关的多个信息文件。

/proc/self 介绍

/proc/self 表示当前进程目录。前面说了通过/proc/$pid/来获取指定进程的信息。如果某个进程想要获取当前进程的系统信息,就可以通过进程的pid来访问/proc/$pid/目录。但是这个方法还需要获取进程pid.为了更方便的获取本进程的信息,linux提供了 /proc/self/目录,这个目录比较独特,不同的进程访问该目录时获得的信息是不同的,内容等价于 /proc/本进程pid/ 。进程可以通过访问/proc/self/目录来获取自己的系统信息,而不用每次都获取pid。

如何利用

cmdline

获取当前启动进程的完整命令

cat /proc/self/cmdline

以上命令返回的结果,就是启动当前进程的命令

cwd

cwd 文件是一个指向当前进程运行目录的符号链接。可以通过查看cwd文件获取目标指定进程环境的运行目录

ls /proc/self/cwd

exe

获取当前进程的可执行文件的完整路径

ls -al /proc/self/exe

environ

获取当前进程的环境变量信息

cat /proc/self/environ

maps

/proc/self/maps 的内容是当前进程的内存映射关系,可通过读取该文件来得到内存数据映射的地址。

字段值依次为:内存区域--权限--文件在内存中的偏移量--设备号--文件索引节点--路径

路径中/usr/bin/cat 表示二进制文件

mem

/proc/self/mem 的内容是当前进程的内存映射关系,可通过读取该文件来得到内存数据映射的地址。但是注意该文件不能直接读取,因为文件中存在着一些无法读取的未被映射区域。所以要结合/proc/self/maps中的偏移地址进行读取。通过参数start和end及偏移地址值读取内容。

相关文章
|
数据建模 Linux
Linux命令(68)之gzip
Linux命令(68)之gzip
441 0
|
Linux API 调度
深入了解DPDK:如何优化网络包处理性能(上)
深入了解DPDK:如何优化网络包处理性能
深入了解DPDK:如何优化网络包处理性能(上)
|
前端开发 测试技术 Go
autojs滑块验证码-查找位置(二)
牙叔教程 简单易懂
3612 0
|
Ubuntu Linux
憨态可掬的牛——Linux上的Cowsay命令体验
Cowsay是一个有趣的命令行工具,在Linux系统中备受欢迎。它能让一个笑脸的小牛说出你输入的文本,为你的终端带来一些趣味和幽默。本文将介绍如何在Linux上安装、运行和使用Cowsay,以及一些有趣的用法和定制技巧。
1187 0
|
XML Java Android开发
Android关于BottomNavigationView效果实现指南
本文详细介绍了Android中BottomNavigationView的实现与定制方法,涵盖颜色设置、图标修改、字体大小调整及多色图标处理等问题。通过XML和Java代码两种方式,解决图标颜色变化、点击效果等问题,并提供去除ActionBar的实现步骤。适合初学者及进阶开发者参考,助力打造更美观、功能丰富的底部导航栏。文末附源码,方便实践操作。
1227 28
Android关于BottomNavigationView效果实现指南
|
11月前
|
负载均衡 Linux 定位技术
做网站第一步:如何选择最适合的云服务器配置?
在互联网世界中,选择一台合适的云服务器对建站至关重要。它不仅影响网站性能和用户体验,还关系到运营成本。面对众多云服务商和产品,需从网站规模、技术架构、地理位置等多方面考量,明确需求,精准选型。无论是个人博客、企业官网,还是电商平台,都应找到匹配自身发展的服务器类型。当前各大云服务商也推出多项优惠活动,助力中小企业快速起步。通过试用体验,更易找到“本命”服务器。愿你拨开迷雾,找到最适合自己的那一款,开启数字世界的精彩篇章。
|
监控 前端开发 数据可视化
React音频进度条组件开发全攻略
本文介绍了音频播放器的实现与优化,涵盖基础功能、进阶交互、问题诊断及企业级增强方案。首先通过绑定音频元素和进度条展示核心逻辑,解决状态循环更新和除零错误等典型问题。接着实现拖拽定位、缓冲加载等功能,处理移动端兼容性和性能优化。针对时间不同步、内存泄漏等问题提出解决方案,并介绍异步状态管理和内存防护策略。最后探讨键盘导航、可视化扩展等企业级特性,总结最佳实践,包括状态隔离、性能监控、无障碍支持及测试方案,建议使用TypeScript和Storybook提升开发效率和类型安全性。
359 30
React音频进度条组件开发全攻略
|
存储 网络协议 安全
网络编程:TCP socket
网络编程:TCP socket
580 0
|
人工智能 JavaScript 前端开发
【最佳实践系列】AI程序员让我变成全栈:基于阿里云百炼DeepSeek的跨语言公告系统实战
本文介绍了如何在Java开发中通过跨语言编程,利用阿里云百炼服务平台的DeepSeek大模型生成公告内容,并将其嵌入前端页面。
883 10
|
机器学习/深度学习 数据采集 Java
我深度学习0基础,还训练出一个识别验证码模型!
我深度学习0基础,还训练出一个识别验证码模型!
798 0
我深度学习0基础,还训练出一个识别验证码模型!