在linux系统中,伪文件系统是系统中重要的组成部分,它与普通文件的最大差别在于它的易失性。普通文件都有固定的存储介质,而伪文件系统则存储在内存中,这也使得伪文件系统在系统掉电后,它保存的内容就会挥发掉。
Linux系统中存在以下几类伪文件系统:
1.procfs:proc提供内核和用户交互的平台,由于其文件格式是ASCII,所以用户可以使用cat,vim,echo等命令查看或修改文件,当然必须在root用户下才有相应权限。
2.sysfs:与procfs类似,由于出现的比较晚,所以它克服了proc的一些缺点,比proc功能更强大。但是由于其文件格式是二进制形式,所以需要特殊工具。该文件系统主要为开发人员提供。
3.其它伪文件系统如:libfs,debugfs等。
     在这些文件系统中,proc出现比较早,其实现也很典型。proc最初的设计目的是提供内核和用户交互的平台,使用户可以动态的管理系统,同时获取系统的运行时的信息。在proc中主要的信息便是系统进程信息。
     本节主要说明proc的实现。
一.proc文件系统的内容 
     proc中主要的文件包含以下几类:
1.进程相关的目录 
     在proc下以数字命名的目录便是每个进程对应的目录,这些目录下存储着各个进程的信息。可以使用cat命令查看各个文件中保存的进程信息。例如/proc/0/下存储着系统初始化init进程的信息。
root@xuhengyang:/proc/1# ls -l
总用量 0
dr-xr-xr-x 2 root root 0 2009-11-19 20:09 attr
-r-------- 1 root root 0 2009-11-19 20:09 auxv
-r--r--r-- 1 root root 0 2009-11-19 20:09 cgroup
--w------- 1 root root 0 2009-11-19 20:09 clear_refs
-r--r--r-- 1 root root 0 2009-11-19 03:56 cmdline
-rw-r--r-- 1 root root 0 2009-11-19 20:09 coredump_filter
-r--r--r-- 1 root root 0 2009-11-19 20:09 cpuset
lrwxrwxrwx 1 root root 0 2009-11-19 20:09 cwd -> /
-r-------- 1 root root 0 2009-11-19 20:09 environ
。。。
root@xuhengyang:/proc/1# cat cmdline 
/sbin/init
2.通用系统信息 
      通用系统信息主要包括内存管理信息,文件系统信息,设备驱动信息,系统总线信息,电源管理信息等。每种信息都有对应文件存在。例如:
root@xuhengyang:/proc# cat meminfo 
MemTotal: 3059316 kB
MemFree: 702464 kB
Buffers: 444540 kB
Cached: 1183516 kB
SwapCached: 0 kB
Active: 1470404 kB
。。。
      每种信息都有对应的文件名,此处就不一一说明了。
3.网络信息 
/proc/net是一个符号链接,它指向当前进程的/self/net/目录,该目录下保存着当前进程的网络管理信息。
root@xuhengyang:/proc# ls -l net
lrwxrwxrwx 1 root root 8 2009-11-19 20:23 net -> self/net
4.系统控制信息 
     系统控制参数用来检测修改系统的运行参数。它存在与/proc/sys下。用户可以使用cat,echo来查看或修改系统的运行参数。例如:
root@xuhengyang:/proc/sys# ls -l
总用量 0
dr-xr-xr-x 0 root root 0 2009-11-19 10:33 crypto
dr-xr-xr-x 0 root root 0 2009-11-19 10:33 debug
dr-xr-xr-x 0 root root 0 2009-11-19 10:33 dev
dr-xr-xr-x 0 root root 0 2009-11-18 19:57 fs
dr-xr-xr-x 0 root root 0 2009-11-19 03:56 kernel
dr-xr-xr-x 0 root root 0 2009-11-18 19:57 net
dr-xr-xr-x 0 root root 0 2009-11-19 10:33 vm
     swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。此处可以使用echo 来修改该值,但是这种修改只是临时的,系统重启后还会恢复到60,要永久修改
root@xuhengyang:/proc/sys# cat vm/swappiness 
60
root@xuhengyang:/proc/sys# echo "10" >vm/swappiness 
root@xuhengyang:/proc/sys# cat vm/swappiness 
10
     但是这只是临时性的修改,在你重启系统后会恢复默认的60,所以,还要做一步:
$ sudo gedit /etc/sysctl.conf
在这个文档的最后加上这样一行:
vm.swappiness=10
然后保存,重启。ok,你的设置就生效了。

proc源码解析(一)--proc文件系统的内容相关推荐

  1. Zabbix 源码解析之监控项数据采集流程

    一.概述 监控项数据采集是一个监控工具最基本的功能,监控数据采集的准确.实时.有效是Zabbix其它监控功能正常运转的前提.因此,Zabbix运维人员有必要了解监控项数据采集流程,并有针对性的设计巡检 ...

  2. Redis源码解析——内存管理

    在<Redis源码解析--源码工程结构>一文中,我们介绍了Redis可能会根据环境或用户指定选择不同的内存管理库.在linux系统中,Redis默认使用jemalloc库.当然用户可以指定 ...

  3. Framework 源码解析知识梳理(5) startService 源码分析

    一.前言 最近在看关于插件化的知识,遇到了如何实现Service插件化的问题,因此,先学习一下Service内部的实现原理,这里面会涉及到应用进程和ActivityManagerService的通信, ...

  4. Cilium创建pod network源码解析

    01 Overview 我们生产K8s使用容器网络插件 Cilium 来创建 Pod network,下发 eBPF 程序实现 service 负载均衡来替换 kube-proxy,并且使用 BGP ...

  5. Kubernetes学习笔记之Calico CNI Plugin源码解析(二)

    女主宣言 今天小编继续为大家分享Kubernetes Calico CNI Plugin学习笔记,希望能对大家有所帮助. PS:丰富的一线技术.多元化的表现形式,尽在"360云计算" ...

  6. Hotspot 对象引用Reference和Finalizer 源码解析

    目录 一.Reference 1.SoftReference / WeakReference / PhantomReference 2.定义 3.ReferenceHandler 4.Cleaner ...

  7. 基于8.0源码解析:startService 启动过程

    基于8.0源码解析:startService 启动过程 首先看一张startService的图,心里有个大概的预估,跟Activity启动流程比,Service的启动稍微简单点,并且我把Service ...

  8. [源码解析] 并行分布式任务队列 Celery 之 多进程架构和模型

    [源码解析] 并行分布式任务队列 Celery 之 多进程架构和模型 文章目录 [源码解析] 并行分布式任务队列 Celery 之 多进程架构和模型 0x00 摘要 0x01 Consumer 组件 ...

  9. 【DPDK】dpdk样例源码解析之三:dpdk-l3fwd_001

    本篇文章主要介绍dpdk-l3fwd实例源码,通过分析代码逻辑,学习DPDK中几个API接口作用以及如何使用? 操作系统版本:CentOS 8.4 DPDK版本:dpdk-20.11.3 如何单独创建 ...

最新文章

  1. iOS - OC iOS 开发体系
  2. 2019.1.11英语笔记1
  3. 底层实现红黑树_stl map底层之红黑树插入步骤详解与代码实现 | 学步园
  4. 实现div里的img图片水平垂直居中
  5. Java中的基本数据类型转换(自动、强制、提升)
  6. Python+OpenCV:基于SVM手写数据OCR(OCR of Hand-written Data using SVM)
  7. 使用ImageView引起Missing contentDescription attribute on image的问题
  8. PyQt5学习--基本窗口控件--加载文件-QFileDialog
  9. uniapp全局传值方式总结
  10. 数学建模matlab题型,数学建模题型之分类
  11. 高等数学张宇18讲 第三讲 一元函数微分学的概念与计算
  12. java 淘口令_淘口令解析
  13. 微信与QQ聊天记录从旧电脑到新电脑之间无缝备份迁移
  14. Android常用内存优化方式整理
  15. linux远程连接硬件加速,Linux中为谷歌Chrome浏览器启用视频硬件加速的方法
  16. python3的numpy包中的numpy.logspace解析
  17. 【Plant Biotech. J.】MdBBX22–miR858– MdMYB9/11/12模块调节苹果皮中原花青素的生物合成
  18. 神舟十二号航天员名单确定,3名航天员本次上天将完成这些任务
  19. 【文末抽书】Java设计模式--单例模式
  20. 基于近场动力学的二维疲劳裂纹扩展模型_完全耦合热弹性问题的普通态基近场动力学模拟——目录

热门文章

  1. 合肥师范学院计算机与技术,合肥师范学院计算机科学与技术系JAVA复习提纲
  2. html5自由者,排球自由人可以一直不下场吗?就是可不可以一直在后排轮换?
  3. css 右上角 翻开动画_css制作电闪雷鸣的天气图标
  4. 系统升级不停服务器,服务器操作系统一直升级吗
  5. php的错误是什么原因,php异常和错误的区别是什么
  6. python函数对变量的作用_Python 包、模块、函数、变量作用域
  7. 11content_processor
  8. luogu P5338 [TJOI2019]甲苯先生的滚榜
  9. little bird
  10. 【shell编程基础0】bash shell编程的基本配置