探究linux系统之proc文件系统详解
创始人
2024-05-30 03:29:01
0

文章目录

  • 前言
  • 一. proc文件系统介绍
  • 二. 进程目录中的常见文件介绍
  • 三. /proc目录下其他常见的文件介绍
    • 3.1 常见的文件
    • 3.2 /proc/sys目录详解
  • 总结

前言

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业,阿里云社区专家博主😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

一. proc文件系统介绍

Linux系统上的/proc目录是一种文件系统,即proc文件系统。

/与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),它不包含任何磁盘上的文件,而是由内核在运行时动态生成的文件和目录。

在Linux中存在着一类特殊的伪文件系统,用于使用与文件接口统一的操作来完成各种功能,例如ptyfs、devfs、sysfs和procfs。而procfs就是其中应用最广泛的一种伪文件系统。

procfs是Linux内核信息的抽象文件接口,大量内核中的信息以及可调参数都被作为常规文件映射到一个目录树中,这样我们就可以简单直接的通过echo或cat这样的文件操作命令对系统信息进行查取和调整了。同时procfs也提供了一个接口,使得我们自己的内核模块或用户态程序可以通过procfs进行参数的传递。在当今的Linux系统中,大量的系统工具也通过procfs获取内核参数,例如ps、lspci等等,没有procfs它们将可能不能正常工作。

而在 /proc 目录中,每个文件和目录都代表着一个系统内核的运行时状态。

这些文件和目录可以用来查询和修改系统的各种参数和配置信息,如进程信息、内存使用情况、系统负载、网络状态等等。通过 /proc 文件系统,用户和程序可以直接访问和操作内核的运行时数据,而无需编写专门的内核模块或系统调用。

/proc 文件系统是一个只读文件系统,其中的大多数文件都是只读的,因为它们反映了内核的运行时状态。但是,有些文件可以被修改以改变内核的配置。例如,可以通过修改 /proc/sys/kernel/hostname 文件来更改系统的主机名。

总的来说,/proc 文件系统为系统管理员和开发人员提供了一种方便的方式来查询和调试系统的状态和性能。

proc文件系统有哪些特点呢?

  • 可读性:proc文件系统的信息是以文本格式呈现的,这使得它易于读取和解析。

  • 系统级别:proc文件系统提供了对内核和系统级别信息的访问,例如系统中正在运行的进程、内存使用情况、CPU信息、硬件配置等等。

  • 可以用于诊断和调试:proc文件系统提供了对系统状态和进程信息的实时访问,这使得它非常有用于诊断和调试系统问题。

proc文件系统提供了一种非常方便的方式来访问和监控系统的内部状态,它是Linux操作系统中非常重要的组成部分

另外:proc 放置的数据都是在内存当中,例如系统内核、进程、外部设备的状态及网络状态等。因为这个目录下的数据都是在内存当中,所以本身不占任何硬盘空间。

在这里插入图片描述

个人主页:我是沐风晓月

本文首发于csdn, 直接在csdn搜【我是沐风晓月】

二. 进程目录中的常见文件介绍

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

[root@mufeng ~]# ll /proc |head
总用量 0
dr-xr-xr-x.  9 root           root                         0 12月  8 19:36 1
dr-xr-xr-x.  9 root           root                         0 3月   6 22:26 10
dr-xr-xr-x.  9 root           root                         0 3月   6 22:26 11
dr-xr-xr-x.  9 root           root                         0 3月   6 22:26 12
dr-xr-xr-x.  9 root           root                         0 3月   6 22:26 13
dr-xr-xr-x.  9 root           root                         0 3月   6 22:26 14
dr-xr-xr-x.  9 root           root                         0 3月   6 22:26 16
dr-xr-xr-x.  9 root           root                         0 12月  8 19:39 16773
dr-xr-xr-x.  9 root           root                         0 12月  8 19:39 16781
[root@mufeng ~]# 

我们来查看运行的一个PID为11713的进程:

[root@mufeng proc]# ll /proc/17713
总用量 0
dr-xr-xr-x.  2 root root 0 3月   6 23:22 attr
-rw-r--r--.  1 root root 0 3月   6 23:22 autogroup
-r--------.  1 root root 0 3月   6 23:22 auxv
-r--r--r--.  1 root root 0 3月   6 23:22 cgroup
--w-------.  1 root root 0 3月   6 23:22 clear_refs
-r--r--r--.  1 root root 0 3月   6 22:27 cmdline
-rw-r--r--.  1 root root 0 3月   6 23:22 comm
-rw-r--r--.  1 root root 0 3月   6 23:22 coredump_filter
-r--r--r--.  1 root root 0 3月   6 23:22 cpuset
lrwxrwxrwx.  1 root root 0 3月   6 23:22 cwd -> /root
-r--------.  1 root root 0 3月   6 23:22 environ
lrwxrwxrwx.  1 root root 0 3月   6 23:07 exe -> /usr/libexec/evolution-calendar-factory-subprocess
dr-x------.  2 root root 0 3月   6 23:22 fd
dr-x------.  2 root root 0 3月   6 23:22 fdinfo
-rw-r--r--.  1 root root 0 3月   6 23:22 gid_map
-r--------.  1 root root 0 3月   6 23:22 io
-r--r--r--.  1 root root 0 3月   6 23:22 limits
-rw-r--r--.  1 root root 0 3月   6 23:22 loginuid
dr-x------.  2 root root 0 3月   6 23:22 map_files
-r--r--r--.  1 root root 0 3月   6 23:22 maps
-rw-------.  1 root root 0 3月   6 23:22 mem
-r--r--r--.  1 root root 0 3月   6 23:22 mountinfo
-r--r--r--.  1 root root 0 3月   6 23:22 mounts
-r--------.  1 root root 0 3月   6 23:22 mountstats
dr-xr-xr-x.  6 root root 0 3月   6 23:22 net
dr-x--x--x.  2 root root 0 3月   6 23:22 ns
-r--r--r--.  1 root root 0 3月   6 23:22 numa_maps
-rw-r--r--.  1 root root 0 3月   6 23:22 oom_adj
-r--r--r--.  1 root root 0 3月   6 23:22 oom_score
-rw-r--r--.  1 root root 0 3月   6 23:22 oom_score_adj
-r--r--r--.  1 root root 0 3月   6 23:22 pagemap
-r--------.  1 root root 0 3月   6 23:22 patch_state
-r--r--r--.  1 root root 0 3月   6 23:22 personality
-rw-r--r--.  1 root root 0 3月   6 23:22 projid_map
lrwxrwxrwx.  1 root root 0 3月   6 22:29 root -> /
-rw-r--r--.  1 root root 0 3月   6 23:22 sched
-r--r--r--.  1 root root 0 3月   6 23:22 schedstat
-r--r--r--.  1 root root 0 3月   6 23:22 sessionid
-rw-r--r--.  1 root root 0 3月   6 23:22 setgroups
-r--r--r--.  1 root root 0 3月   6 23:22 smaps
-r--r--r--.  1 root root 0 3月   6 23:22 stack
-r--r--r--.  1 root root 0 3月   6 23:07 stat
-r--r--r--.  1 root root 0 3月   6 23:22 statm
-r--r--r--.  1 root root 0 3月   6 22:27 status
-r--r--r--.  1 root root 0 3月   6 23:22 syscall
dr-xr-xr-x. 11 root root 0 3月   6 22:29 task
-r--r--r--.  1 root root 0 3月   6 23:22 timers
-rw-r--r--.  1 root root 0 3月   6 23:22 uid_map
-r--r--r--.  1 root root 0 3月   6 23:22 wchan
[root@mufeng proc]# 
  • cmdline 启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息;
[root@mufeng proc]# more 17942/cmdline
/usr/libexec/fwupd/fwupd
  • cwd 指向当前进程运行目录的一个符号链接;

  • environ 当前进程的环境变量列表,彼此间用空字符(NULL)隔开;变量用大写字母表示,其值用小写字母表示;

[root@mufeng proc]# more 17942/environ
LANG=zh_CN.UTF-8
  • exe — 指向启动当前进程的可执行文件(完整路径)的符号链接,通过/proc/N/exe可以启动当前进程的一个拷贝;

  • fd — 这是个目录,包含当前进程打开的每一个文件的文件描述符(file descriptor),这些文件描述符是指向实际文件的一个符号链接;

ot@mufeng proc]# ll /proc/76501/fd
总用量 0
lrwx------. 1 root root 64 3月   6 23:29 0 -> /dev/pts/0
lrwx------. 1 root root 64 3月   6 23:29 1 -> /dev/pts/0
lrwx------. 1 root root 64 3月   6 23:28 2 -> /dev/pts/0
lrwx------. 1 root root 64 3月   6 23:29 3 -> /var/tmp/a.txt.swp
  • limits 当前进程所使用的每一个受限资源的软限制、硬限制和管理单元;此文件仅可由实际启动当前进程的UID用户读取

  • maps — 当前进程关联到的每个可执行文件和库文件在内存中的映射区域及其访问权限所组成的列表;

[root@mufeng proc]# ll /proc/76501/maps
-r--r--r--. 1 root root 0 3月   6 23:30 /proc/76501/maps
[root@mufeng proc]# 
  • mem — 当前进程所占用的内存空间,由open、read和lseek等系统调用使用,不能被用户读取;

  • root — 指向当前进程运行根目录的符号链接;在Unix和Linux系统上,通常采用chroot命令使每个进程运行于独立的根目录;

  • stat — 当前进程的状态信息,包含一系统格式化后的数据列,可读性差,通常由ps命令使用;

  • statm — 当前进程占用内存的状态信息,通常以“页面”(page)表示;

  • status — 与stat所提供信息类似,但可读性较好,如下所示,每行表示一个属性信息;

[root@mufeng proc]# more /proc/76501/status
Name:	vim
Umask:	0022
State:	S (sleeping)
Tgid:	76501
Ngid:	0
Pid:	76501
PPid:	75155
TracerPid:	0
Uid:	0	0	0	0
Gid:	0	0	0	0
FDSize:	256
Groups:	0 
VmPeak:	  151768 kB
VmSize:	  151544 kB
VmLck:	       0 kB
VmPin:	       0 kB
  • task 目录文件,包含由当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中,这类似于其内容类似于每个进程目录中的内容;

三. /proc目录下其他常见的文件介绍

3.1 常见的文件

  • /proc/cpuinfo: 这个文件包含了有关 CPU 的详细信息,包括厂商、型号、频率、缓存等信息。

  • /proc/meminfo: 这个文件包含了有关内存的详细信息,包括可用内存、缓存大小、交换分区等信息。

  • /proc/loadavg: 这个文件包含了系统的负载平均值,它表示系统正在运行的进程数和等待 CPU 的进程数的平均值。

  • /proc/version: 这个文件包含了系统的版本信息,包括内核版本、GCC 版本等信息。

  • /proc/net/tcp: 这个文件包含了有关 TCP 连接的信息,包括本地地址、远程地址、状态等信息。

  • /proc/net/udp: 这个文件包含了有关 UDP 连接的信息,包括本地地址、远程地址、状态等信息。

  • /proc/sys/kernel/hostname: 这个文件包含了系统的主机名。

  • /proc/sys/kernel/pid_max: 这个文件包含了系统允许的最大进程 ID

  • /proc/sys/fs/file-nr: 这个文件包含了有关打开文件的统计信息,包括当前打开的文件数、已分配的文件句柄数和最大文件句柄

3.2 /proc/sys目录详解

/proc/sys 目录下包含了许多系统内核运行时的配置文件,可以通过修改这些文件来改变系统的行为。

文件介绍
/proc/sys/kernel/hostname用于设置或获取系统的主机名。
/proc/sys/kernel/pid_max用于设置或获取系统支持的最大进程ID号。
/proc/sys/kernel/sem用于设置或获取系统的信号量限制。
/proc/sys/kernel/shmmax用于设置或获取系统共享内存段的最大大小。
/proc/sys/kernel/shmall用于设置或获取系统共享内存的最大页数。
/proc/sys/net/ipv4/tcp_keepalive_time用于设置或获取TCP Keepalive的时间间隔。
/proc/sys/net/ipv4/ip_forward用于控制IP包的转发。
/proc/sys/net/ipv4/tcp_syncookies用于控制系统是否启用TCP Syncookie保护。
/proc/sys/vm/swappiness用于设置内核在不足内存时候的换页策略。
/proc/sys/fs/file-max用于设置或获取系统可以同时打开的文件数的最大值

需要注意的是,这些文件都是在内核运行时动态生成的,实际上并不是磁盘上的文件。因此,修改这些文件并不会直接修改磁盘上的文件,而是会直接影响内核的运行。如果想要在系统启动时自动修改这些文件,可以在 /etc/sysctl.conf 中设置。

总结

我是沐风晓月,本文首发于csdn,在csdn搜索 【我是沐风晓月】获取更多内容。
💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

相关内容

热门资讯

求关于女生寝室的鬼片 求关于女生寝室的鬼片RT~~~~要好看的首选女高怪谈系列,第一部年代久远了些,但是看看无妨,第二部和...
有个修仙小说里,有个诗意的情诗... 有个修仙小说里,有个诗意的情诗。大概意思是有了什么才有什么,几个句子。有人知道嘛?最近总是反反复复的...
贺锦兮顾西城是什么小说 贺锦兮顾西城是什么小说贺锦兮顾西城是《代嫁甜妻》小说。《代嫁甜妻》是香网著名作家明月西所著的总裁类型...
邓泽元的南昌大学教授 邓泽元的南昌大学教授学历简况1981年9月考入江西农业大学畜牧兽医系,1985年获学士学位,同年留江...
造船的介绍 造船的介绍造船是指建造或制造船只的生产工业,一般是在一种专业设施造船厂里的船台或船坞中进行。造船本身...
帝凰之神医弃妃拍成电视剧了吗 帝凰之神医弃妃拍成电视剧了吗不希望是刘诗诗演女主 感觉她演不出来那种感觉没影的事呢!哪来的电视剧女主...
银河帝国16岁能看吗? 银河帝国16岁能看吗?银河帝国16岁,可不可以看一般的话未成年是不能看这种电影的?因为这种太暴力,血...
怎么成为神? 怎么成为神?`哈`反应好激烈啊`我开玩笑滴`神是故事里的人物,要成为神有两种方法,第一是修炼得道成神...
踽踽独行什么意思 踽踽独行解释 踽踽独行什么意思 踽踽独行解释1、踽踽独行,汉语成语,拼音是jǔ jǔ dú xíng,意思是孤零零...
谁有神医小农民炊饼哥哥406章 谁有神医小农民炊饼哥哥406章可以啊。。。。
请问开洗脚城需要办哪些手续? 请问开洗脚城需要办哪些手续?到工商部门咨询就知道了
佛弟子如何向大众弘扬佛法 佛弟子如何向大众弘扬佛法一、财布施:分内财、外财。譬如布施你的体力,帮别人劳动就是内财布施;布施掉你...
2022闺蜜文案短句 2022闺蜜文案短句2022闺蜜文案短句(精选68句) 1.不忘初心,方能始终。十年之约,四叶绽放,...
对联如何押韵 对联如何押韵对联如何押韵对联不用押韵。只要满足对联六相即可。六相中并无押韵要求。对联六相:字数相等,...
大象伯伯过生日,请来了狮子,小... 大象伯伯过生日,请来了狮子,小熊,小猫,大象会买什么招待大家大象伯伯会给狮子买牛奶(不能给他买肉 否...
谁知道有这样一本小说女主叫花未... 谁知道有这样一本小说女主叫花未央,男主姓帝女主是重生重生之前和男主有个儿子女主重生之前有个姓诸葛的纯...
花火中的小说念念不忘叫什么 花火中的小说念念不忘叫什么不就是念念不忘吗如若有你,一世欢喜?老婆大人有点冷诶,你说的是不是最新里的...
讲的就是女主是魔法师,穿越到古... 讲的就是女主是魔法师,穿越到古代成为不受宠的公主,和哥哥还有外公在外面生活,后来代替哥哥到邻国当人质...
无心法师为什么被禁播 无心法师为什么被禁播大概是因为涉及到妖魔鬼怪吧宣扬封建迷信吧。没有被禁播,还是可以看到的。《无心法师...
生孩子是艰辛的事吗? 生孩子是艰辛的事吗?我们经常会听到很多人都说女生生孩子是非常艰辛的事情。可能一开始大部分的女生没有经...