linux proc系统

news/2024/3/29 9:50:45/文章来源:https://blog.csdn.net/liulanba/article/details/131520098

Linux的/proc文件系统是一个特殊的文件系统,它提供了访问内核和进程信息的接口。它不是一个存储在硬盘上的文件系统,而是一个虚拟的文件系统,存在于内存中,用于向用户和进程展示有关系统状态和进程信息的数据。
/proc目录结构:
/proc目录下的文件和子目录提供了对系统状态和进程信息的访问点。一些常见的子目录和文件包括:

/proc/cpuinfo:包含有关CPU的信息,如型号、频率、缓存大小等。
/proc/meminfo:包含有关内存的信息,如总内存、可用内存、交换空间等。
/proc/net:包含有关网络协议和连接的信息。
/proc/PID:每个运行的进程都有一个以PID命名的子目录,包含该进程的相关信息,如命令行参数、打开的文件、内存映射等。
/proc/sys:包含了系统内核的运行时参数和配置信息,可以通过读写这些文件来修改内核参数。
访问/proc文件系统:
/proc文件系统可以像访问普通文件和目录一样进行读取和写入操作。可以使用标准的文件I/O操作函数(如open()、read()、write())或命令行工具(如cat、echo)来访问/proc中的文件和目录。

获取系统和进程信息:
/proc文件系统提供了一种方便的方式来获取系统和进程的信息,可以通过读取相应的文件来获得特定的信息。例如:

获得CPU信息:

cat /proc/cpuinfo

获得内存信息:

cat /proc/meminfo

获得进程列表:

ls /proc

修改内核参数:
/proc/sys目录下的文件提供了一种方式来修改内核运行时的参数和配置。可以通过修改这些文件的内容来调整系统的行为。例如:

修改文件句柄限制:

echo 100000 > /proc/sys/fs/file-max

注意事项:

/proc文件系统中的文件和目录是动态生成的,它们的内容是实时反映系统状态的。
对/proc文件系统的读取操作是非阻塞的,读取时会立即返回当前可用的数据。
/proc文件系统中的一些文件只有超级用户(root)才能访问。
/proc文件系统是Linux中非常有用的一个功能,它提供了对系统和进程信息的实时访问。通过读取和操作/proc文件系统中的文件和目录,可以获取关于系统状态、硬件信息、进程信息等各种有用的数据。下面是继续描述Linux的/proc系统的一些重要信息:

进程相关信息:

/proc/[PID]/status:包含有关特定进程(使用PID替换[PID])的状态信息,如进程ID、父进程ID、内存使用情况等。
/proc/[PID]/cmdline:包含特定进程的命令行参数。
/proc/[PID]/fd:是一个目录,包含特定进程打开的文件描述符的符号链接。
/proc/[PID]/maps:包含特定进程的内存映射信息,显示进程使用的内存区域及其权限等。
/proc/[PID]/stat:包含特定进程的统计信息,如CPU使用时间、状态等。
/proc/[PID]/cpuinfo:包含特定进程运行在哪个CPU核心上的信息。
系统状态和硬件信息:

/proc/loadavg:包含系统的平均负载情况。
/proc/uptime:包含系统自上次启动以来的运行时间和空闲时间。
/proc/meminfo:包含系统内存使用情况,如总内存、可用内存、缓存等。
/proc/version:包含系统内核版本信息。
/proc/cpuinfo:包含系统CPU信息,如型号、频率、缓存等。
/proc/filesystems:包含支持的文件系统类型。
网络和网络连接信息:

/proc/net/dev:包含网络设备的统计信息,如接收和发送的数据包数量、错误等。
/proc/net/arp:包含ARP(Address Resolution Protocol)缓存信息。
/proc/net/tcp:包含当前TCP连接的信息。
/proc/net/udp:包含当前UDP连接的信息。
/proc/net/icmp:包含ICMP(Internet Control Message Protocol)统计信息。
其他一些有用的信息:

/proc/sys:是一个目录,包含系统内核运行时的参数和配置信息,如文件句柄限制、网络参数等。
/proc/self:是一个指向当前正在运行的进程自身的符号链接。可以使用它访问当前进程的信息,类似于/proc/[PID]。
需要注意的是,/proc文件系统中的文件和目录可能因Linux发行版和内核版本的不同而有所差异。此外,对/proc文件系统的读取和操作需要适当的权限,某些文件只能由超级用户(root)访问。

Linux的/proc系统的相关信息:

/proc/sys/kernel目录:
/proc/sys/kernel/hostname:包含主机名信息。
/proc/sys/kernel/osrelease:包含操作系统内核版本信息。
/proc/sys/kernel/panic:设置系统遇到严重错误时的行为,如重启或转储内存。
/proc/sys/kernel/panic_on_oops:设置是否在内核遇到致命错误(oops)时自动触发panic。
/proc/sys/kernel/sem:包含系统的信号量参数,用于进程间同步。
/proc/sys/kernel/sysrq:用于控制sysrq功能,可以通过sysrq键组合触发一些特殊操作。
/proc/sys/net目录:
/proc/sys/net/core:包含核心网络参数,如最大套接字缓冲区大小、消息队列长度等。
/proc/sys/net/ipv4:包含IPv4网络参数,如IP转发、路由缓存等。
/proc/sys/net/ipv6:包含IPv6网络参数,如IPv6转发、邻居缓存等。
/proc/sys/net/bridge:用于桥接网络设置的参数。
/proc/sys/net/icmp:包含ICMP参数,如ICMP重定向、错误报文等。
/proc/sys/fs目录:
/proc/sys/fs/file-max:限制系统上可以打开的文件句柄数。
/proc/sys/fs/inotify:包含inotify文件系统参数,用于文件和目录监控。
/proc/sys/fs/inotify/max_user_watches:限制一个用户可以监视的inotify对象数。
/proc/sys/fs/inotify/max_user_instances:限制一个用户可以创建的inotify实例数。
/proc/sys/vm目录:
/proc/sys/vm/swappiness:控制内核在内存紧张时将数据交换到交换空间的倾向性。
/proc/sys/vm/dirty_ratio:指定内存脏页的最大比例。
/proc/sys/vm/dirty_background_ratio:指定内存脏页开始写回磁盘的比例。
这些仅是/proc文件系统中的一部分内容,还有许多其他文件和目录可以提供系统和进程的各种信息。/proc系统的使用可以帮助系统管理员、开发人员和调试人员深入了解系统的状态、配置参数和进程行为。请注意,/proc文件系统中的某些文件是只读的,而其他文件允许读取和写入。在使用/proc文件系统时,应小心避免误操作,以免对系统的正常运行产生不良影响。

通过/proc文件系统,可以获取特定进程的CPU和内存使用率的信息,下面是一些常用的方法:

CPU使用率:

/proc/[PID]/stat文件中的第 13 和 14 列是进程的CPU时间信息。第 13 列是进程在用户态运行的时间(以时钟滴答为单位),第 14 列是进程在内核态运行的时间。可以读取这两个值并计算出总的CPU时间。
/proc/[PID]/stat文件中的第 22 列是进程的启动时间(以时钟滴答为单位)。可以读取这个值,并结合当前系统的时钟滴答速度,计算出进程运行的时间。
使用两次采样的方式,分别在一段时间间隔内获取两次进程的CPU时间和运行时间,然后计算两次采样之间的差值,即可得到CPU使用率。
内存使用率:

/proc/[PID]/status文件中的 VmRSS 字段表示进程的物理内存使用量(以KB为单位)。
/proc/[PID]/status文件中的 VmSize 字段表示进程的虚拟内存大小(以KB为单位)。
/proc/meminfo文件中的 MemTotal 字段表示系统的总内存大小(以KB为单位)。
可以读取进程的物理内存使用量和系统的总内存大小,并计算出内存使用率。
需要注意的是,这些值都是以特定的单位(如时钟滴答、KB)表示的原始数据,需要进行一定的计算和转换才能得到可读的CPU和内存使用率。

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CANDENCE :简单贴装器件封装绘制

紧接candence:常见表贴焊盘绘制举例 简单贴装器件封装绘制 以0603封装电容为例,绘制其封装,这里会用到前面绘制的电容的焊盘。 1、打开PCB editor 软件工具 2、新建一个PACKGE symbol 文件,设置好路径和名称。点击ok确认 3、设置画布尺寸、原点位置、…

Uniapp开发的开源盲盒系统源码

最近比较火的盲盒系统,该项目是基于uniapp开发的盲盒项目,有需要的朋友可以联系我,运营级的项目,本次开源的是uniapp前端模板,选用技术为JAVA,采用框架:spring bootmybatisvue开发。 通过node安…

行为型模式-策略模式(一)

今天就说一说设计模式中的策略模式,从名字来讲,意思就是,对应不同的情况,就有一种解决问题的办法,不同的情况,就有不同的应对方法,这就是策略模式,非常的智能化。 也可以参考菜鸟 …

【Git原理与使用】-- 远程操作

目录​​​​​​​ 理解分布式版本控制系统 远程仓库 新建远程仓库 lssue 与 Pull Request模板文件 知识铺垫 lssue 模板文件 Pull Request模板文件 克隆远程仓库 使用 HTTPS 方式 使用 SSH 方式 第一步:创建SSH Key 向远程仓库推送 过程梳理 实操 …

【SLAM学习】获取IMU和雷达消息并发布

本文主要记录如何将rosbag的消息进行获取并进行发布以及后续处理。 测试数据集: 链接: https://pan.baidu.com/s/1DthWE45V5Zhq7UUrfTt_CQ 提取码: mxvn 查看数据集bag包里面都有那些话题: rosbag info indoor_lab_RS.bag 可以看到包含了两个话题…

『手撕 Mybatis 源码』09 - MyBatis 插件

MyBatis插件 概述 问题:什么是Mybatis插件?有什么作用? Mybatis插件本质上来说就是一个拦截器,它体现了 JDK 动态代理和责任链设计模式的综合运用 Mybatis 中所允许拦截的方法如下 Executor 【SQL执行器】【update&#xff…

Docker服务编排之Docker Compose的使用

Docker服务编排 概念:按照一定的业务规则批量的管理容器 微服务架构的应用系统中一般包含很多微服务,一个微服务中又包含很多的实例,每个微服务都要手动管理,维护的工作量很大。 拉去镜像,创建多个容器,分…

【Vue3】学习笔记-自定义hook函数

概念 什么是hook? 本质是一个函数,把setup函数中使用的Composition API进行了封装。 类似于vue2.x中的mixin。(但是mixins会组件的配置项覆盖。vue3使用了自定义hooks替代mixnins,hooks本质上是函数,引入调用。) 自定义hook的优势: 复用代…

【密码学基础】半/全同态加密算法基础学习笔记

文章目录 1 半同态加密Pailliar加法同态加密Paillier加解密过程Paillier的同态性Paillier的安全性 El Gamal乘法同态加密RSA乘法同态加密 2 全同态加密BFV全同态加密BFV的编码方式BFV加解密过程BFV的安全性BFV的同态性自举Bootstrapping 3 同态加密应用场景场景1:安…

0基础学习VR全景平台篇 第54篇: 高级功能-皮肤

功能位置示意 一、本功能将用在哪里? 皮肤功能,摆脱传统VR全景展示样式,自行选择场景与全景分组的界面模板,从而与不同的应用行业风格相互适应,达到最贴切的展示效果。 是在各种风格的VR全景作品中,最快实…

ubuntu安装MobaXterm和WPS

文章目录 ubuntu安装MobaXtermi386 架构wine操作步骤 ubuntu安装WPS操作步骤WPS版本知识补充 ubuntu安装MobaXterm i386 架构 sudo dpkg --add-architecture i386 是一个Linux系统中的命令,用于添加一个新的架构(architecture)支持到当前系统…

netwox构造免费ARP数据包【网络工程】(保姆级图文)

目录 构造免费的 ARP 数据包。1) 构造免费的 ARP 数据包2) 使用 Wireshark 进行抓包 总结 欢迎关注 『网络工程专业』 系列,持续更新中 欢迎关注 『网络工程专业』 系列,持续更新中 温馨提示:对虚拟机做任何设置,建议都要先快照备…

IDEA中集成zookeeper的插件

IDEA中集成zookeeper的插件 一、IDEA中集成插件 搜索插件并安装: 安装完成,重启IDEA 配置zk集群 连接成功

【PortAudio】PortAudio 音频处理库Demo

1. 介绍 PortAudio是一个免费、跨平台、开源的音频I/O库。看到I/O可能就想到了文件,但是PortAudio操作的I/O不是文件,而是音频设备。它能够简化C/C的音频程序的设计实现,能够运行在Windows、Macintosh OS X和UNIX之上(Linux的各种…

从零开始 Spring Boot 57:JPA中的一对多关系

从零开始 Spring Boot 57:JPA中的一对多关系 图源:简书 (jianshu.com) 在上篇文章中我们介绍了如何在 JPA 中实现实体的一对一关系,在关系型数据库设计中,除了一对一关系,还存在一对多关系。本篇文章介绍如何在 JPA 中…

【Python】NLP参数控制模板

前言 学过AI的都知道训练一个模型需要调整很多参数,为了有效的管理这些参数、不至于让代码的参数写的乱七八糟,有必要写一套控制参数的模板。 argparser argparser是python当中的参数解析器,在NLP当中主要是用来接受和使用参数的。一个使用它…

QT学习笔记:TCP客户端的实现

QT一般用来做客户端&#xff0c;我这里就简单讲一下怎么开发基于QT的TCP客户端。 1、用QtCreator创建项目 2、界面 3、.pro文件添加network QT core gui network 4、mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include &l…

SpringBoot的缓存管理

缓存是分布式系统中的重要组件&#xff0c;主要解决数据库数据的高并发访问问题。在实际开发中&#xff0c;尤其是用户 访问量较大的网站&#xff0c;为了提高服务器访问性能、减少数据库的访问压力、提高用户体验&#xff0c;使用缓存显得 尤为重要。Spring Boot对缓存提供了良…

基于单片机的盲人导航智能拐杖老人防丢防摔倒发短息定位

功能介绍 以STM32单片机作为主控系统&#xff1b; OLED液晶当前实时距离&#xff0c;安全距离&#xff0c;当前经纬度信息&#xff1b;超声波检测小于设置的安全距离&#xff0c;蜂鸣器报警提示&#xff1a;低于安全距离&#xff01;超声波检测当前障碍物距离&#xff0c;GPS进…

从零开始备战数学建模国赛之线性规划1.1

从零开始备战数学建模国赛之线性规划1.1 现在距离2023年的数学建模国赛还有不足三个月的时间&#xff0c;想与大家共同备战国赛。 这是我自己总结的一些代码和资料&#xff08;本文中的代码以及参考书籍等&#xff09;&#xff0c;放在github上供大家参考&#xff1a;https://…