proc文件系统

news2024/11/16 4:17:30

proc介绍

在这里插入图片描述

(1)proc是虚拟文件系统,虚拟的意思就是proc文件系统里的文件不对应硬盘上任何文件,我们用去查看proc目录下的文件大小都是零,是接受到请求才动态生成的;
(2)proc文件系统是开放给上层了解内核运行状态的窗口,通过读取proc系统里的文件,可以知道内核中一些重要数据结构的数值,从而知道内核的运行情况,也可以方便调试内核和应用程序;
(3)proc文件系统的思路:在内核中构建一个虚拟文件系统/proc,内核运行时将内核中一些关键的数据结构以文件的方式呈现在/proc目录中的一些特定文件中,这样相当于将不可见的内核中的数据结构以可视化的方式呈现给内核的开发者

最初开发 /proc 文件系统是为了提供有关系统中进程的信息。但是由于这个文件系统非常有用,因此内核中的很多元素也开始使用它来报告信息,或启用动态运行时配置。

proc文件系统提供信息

list

/proc 文件系统的根目录中的内容:
文件名 作用
/proc/cmdline 查看内核的启动参数
/proc/cpuinfo 查看CPU的信息
/proc/devices 查看内核中已经注册的设备
/proc/filesystems 内核当前支持的文件系统类型
/proc/interrupts 中断的使用及触发次数,调试中断时很有用
/proc/misc 内核中注册的misc类设备
/proc/modules 已经加载的模块列表,对应lsmod命令
/proc/partitions 系统的分区表
/proc/version 系统的版本
数字 数字的文件夹都是相应的进程
/proc/mounts 已加载的文件系统的列表,对应mount命令
/proc/meminfo 内核的内存信息
/proc/fb 内核中注册的显示设备

root@ATP-YQYF-459:/proc# ls
1   44   cgroups  filesystems  meminfo  self  tty      version_signature
42  61   cmdline  interrupts   mounts   stat  uptime
43  bus  cpuinfo  loadavg      net      sys   version

meminfo

这个是我用的最多的,因为我水吧,和top一起配合使用监控 程序运行状态

cpuinfo

包含cpu的基本信息

root@ATP-YQYF-459:/proc# cat cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 158
model name      : Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz
stepping        : 10
microcode       : 0xffffffff
cpu MHz         : 2904.000
cache size      : 256 KB
physical id     : 0
siblings        : 6
core id         : 0
cpu cores       : 6
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 6
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave osxsave avx f16c rdrand lahf_lm abm 3dnowprefetch fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid mpx rdseed adx smap clflushopt intel_pt ibrs ibpb stibp ssbd
bogomips        : 5808.00
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 6
...

查看进程打开的文件

root@ATP-YQYF-459:/proc/1# ls fd -l
total 0
lrwx------ 1 root root 0 May 12 16:37 0 -> /dev/null
lrwx------ 1 root root 0 May 12 16:37 1 -> /dev/null
l--------- 1 root root 0 May 12 16:37 10 -> 'anon_inode:[eventpoll]'
lrwx------ 1 root root 0 May 12 16:37 2 -> /dev/null
l-wx------ 1 root root 0 May 12 16:37 3 -> /dev/kmsg
lrwx------ 1 root root 0 May 12 16:37 4 -> /dev/lxss
lrwx------ 1 root root 0 May 12 16:37 5 -> /unknown
l--------- 1 root root 0 May 12 16:37 7 -> 'anon_inode:[eventpoll]'
l--------- 1 root root 0 May 12 16:37 8 -> /
lrwx------ 1 root root 0 May 12 16:37 9 -> 'socket:[8]'

->前的数字就是进程打开的文件描述符,后面是文件描述符指向的文件路径;

查看进程中加载的动态库的地址范围


root@ATP-YQYF-459:/proc/1# cat maps
00200000-00225000 r--p 00000000 00:00 148943                     /init
00225000-00226000 r--p 00025000 00:00 148943                     /init
00226000-00296000 r-xp 00026000 00:00 148943                     /init
00296000-00297000 r-xp 00096000 00:00 148943                     /init
00297000-0029e000 rw-p 00097000 00:00 148943                     /init
0029e000-002a4000 rw-p 00000000 00:00 0
00e0f000-00e15000 rw-p 00000000 00:00 0                          [heap]
7f99aeea0000-7f99aeea1000 ---p 00000000 00:00 0
7f99aeea1000-7f99aeeb6000 rw-p 00000000 00:00 0
7fffc4f49000-7fffc5749000 rw-p 00000000 00:00 0                  [stack]
7fffc5c9c000-7fffc5c9d000 r-xp 00000000 00:00 0                  [vdso]

查看进程的栈信息

在这里插入图片描述
stack文件里就是进程当前的栈信息,类似于gdb调试中的bt指令;

查看负载

 root@ATP-YQYF-459:/proc# cat loadavg
0.52 0.58 0.59 1/6 123

在这里插入图片描述

/proc/net/

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可加载内核模块(LKM)是用来展示 /proc 文件系统的一种简单方法,这是因为这是一种用来动态地向 Linux 内核添加或删除代码的新方法。LKM 也是 Linux 内核中为设备驱动程序和文件系统使用的一种流行机制。如果你曾经重新编译过 Linux 内核,就可能会发现在内核的配置过程中,有很多设备驱动程序和其他内核元素都被编译成了模块。如果一个驱动程序被直接编译到了内核中,那么即使这个驱动程序没有运行,它的代码和静态数据也会占据一部分空间。但是如果这个驱动程序被编译成一个模块,就只有在需要内存并将其加载到内核时才会真正占用内存空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/518369.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何通过品牌矩阵号赋能品牌?

小红书作为年轻人的“消费决策”平台、逐步成为越来越多用户的消费指南,同时也变成众多品牌的营销基地。在小红书运营矩阵账号可以很好的树立品牌形象、增加粉丝粘性、节约广告成本,那么在搭建矩阵的过程中如何管理品牌矩阵号也成为众多品牌必须要思考的…

3.操作系统

文章目录 1.操作系统概述(1)当前操作系统的主要类型(2)操作系统的特点(3)五种主要的功能(4)考点分布 2.进程(1)进程的状态(2)进程的定…

jeecg低代码主从表打印

1.在在线开发菜单栏中选择online表单开发,新建两张表,分别为主表和附表。 2.首页进入报表设计——积木报表设计。 3.进入报表管理——打印设计,选择一个模板或者新建都可以。 4.进入设计页面,点击数据集管理右边的添加数据表&a…

高通开发系列 - 驱动模块Oops后如何找到出错位置

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 问题概述问题现象出错定位问题概述 加载驱动模块时发生:Kernel panic - not syncing: Fatal exception 那么如何找到驱动模块出错的…

抖音AI绘画变成真人软件

抖音AI绘画成人软件的发展可能包括以下几个方面: 算法优化:随着深度学习算法的不断发展,未来该技术可能会通过改进模型架构、优化训练方式等手段,提高生成图像的质量和自然度。 多样化的绘画风格:为了满足用户…

【软考备战·希赛网每日一练】2023年5月12日

文章目录 一、今日成绩二、错题总结第一题第二题第三题第四题 三、知识查缺 题目及解析来源:2023年05月12日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要…

2021 第十二届蓝桥杯大赛软件赛决赛, 国赛,C/C++ 大学B组题解

2021 第十二届蓝桥杯大赛软件赛决赛, 国赛,C/C 大学B组题解 文章目录 第1题 —— 带宽 (5分)第2题 —— 纯质数 (5分)第3题 —— 完全日期 (10分)第4题 —— 最小权值 (10分&#xf…

MySQL之快速查询的秘籍 【B+树索引】

前言 本文章收录在MySQL性能优化原理实战专栏,点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的:从根儿上理解MySQL》 😄学完前面我们讲解了InnoDB数据页的7个组成部分,知道了各个数据页可以组成一个双…

Linux 多线程(3)多线程应用、信号量、线程池、单例模式

应用 生产者与消费者模型 生产者与消费者模型---设计模式的一种 设计模式--程序员针对一些典型的应用场景所给出的一种典型的解决方案 应用场景--在有大量数据任务产生的同时需要进行任务处理的场景 如果采用单执行流解决: 效率低下 资源利用不一定合理(…

【Python数据分析】常用内置函数(一)

🙋‍ 哈喽大家好,本次是python数据分析、挖掘与可视化专栏第四期 ⭐本期内容:常用内置函数 🏆系列专栏:Python数据分析、挖掘与可视化 👍“总有一段时光悄悄过去然后永远怀念.” 文章目录 前言类型转换int(…

Vue---列表渲染

目录 一、列表渲染的基本使用 (1)渲染数组数据 (2)渲染对象数据 二、v-for指令的高级用法 三、列表过滤 四、列表排序 一、列表渲染的基本使用 使用v-for指令可以将数组,对象数据渲染成列表视图 (1&a…

前端自学好还是培训好?女生有多适合学前端,我来告诉你!

2023年了,你是否还在迷茫或者每个月拿着5/6k做着卷死的工作,不但存不下钱还不能好好享受生活,如果是,那你真该考虑一下转行了。 好程序员先说说前端到底怎么开始学: 有的伙伴说今年28岁了,学的会计&#xf…

Vue中的MVVM【第三篇】

大纲: MVVM图示 🌈 一、MVVM简介 简单来说:MVVM(M-VM-M),一种更好的UI模式解决方案,MVVM通过数据双向绑定让数据自动地双向同步。 M(Model):Model数据模型,json格式数据…

Revit中如何创建曲面嵌板及一键成板

一、Revit中如何创建曲面嵌板 在我们的绘图过程中可能会遇见一些曲面形状,而我们的常规嵌板没办法满足我们绘制的要求,我们今天学习如何在revit中绘制曲面嵌板。 1.新建“自适应公制常规模型”族,创建4个点图元并为其使用自适应。 2.在相同的…

linux系统内核调试手段——动态输出

https://xuesong.blog.csdn.net/article/details/109522945?spm1001.2014.3001.5502 使用动态输出是系统内核调试的重要手段之一。 内核使用大量的pr_debug()/dev_dbg()函数来输出信息,使用了动态输出的技术。在使用动态输出时,记住需要挂载debugfs文件…

Java 8 ConcurrentHashMap 源码分析

文章目录 1. ConcurrentHashMap 的底层结构2. ConcurrentHashMap 的元素存储过程3. ConcurrentHashMap 的扩容3.1 扩容的过程3.2 源码分析 1. ConcurrentHashMap 的底层结构 JDK 1.8 的 ConcurrentHashMap 底层数据结构与 HashMap 基本相同,二者在容量机制、Entry …

测试的分类(按测试对象、是否查看代码、开发阶段、实施组织...... + 思维导图总结)

目录 一、测试的分类 1. 按测试对象划分 2. 按照是否查看代码划分 3. 按照开发阶段划分 4. 按照测试实施组织划分 5. 按照是否运行划分 6. 按照是否手工划分 7. 按照地域划分 二、总结 一、测试的分类 1. 按测试对象划分 (1)界面测试 简称UI测…

Centos配置OpenVPN+OpenLDAP认证

Centos配置OpenVPNOpenLDAP认证 一、安装openvpn-auth-ldap插件二、配置ldap.conf文件三、配置openvpn中的server.conf文件四、配置客户端client.ovpn文件五、开启路由转发功能六、脚本编辑七、测试 Centos搭建OpenVPN的环境有很多资料,自行查询配置 一、安装openv…

工作两年了,不想做客服,转行学数据分析改变未来!

不想做客服,转行学数据分析改变未来! 从今年开年以来,已经接触了很多转行人群的课程咨询,其中比较有代表性的原职业就是客服,听到对职业的抱怨大多是:工作辛苦,待遇又低,又没前途&am…

基于WiFi的CSI数据做呼吸频率检测-python版

一、概述 本Demo无需机器学习模型,Demo功能涉及的理论主要参考了硕士学位论文《基于WiFi的人体行为感知技术研究》,作者是南京邮电大学的朱XX,本人用python复现了论文中呼吸频率检测的功能。Demo实现呼吸速率检测的主要过程为: …