Linux中的proc目录详细介绍


1.什么是proc

观察LINUX F8的/etc/rc.d/sysinit文件可以发现,在该脚本的21行出现如下语句:

复制代码
代码如下:

if [ ! -e/proc/mounts ]; then
mount -n -t proc /proc /proc
mount -n -t sysfs /sys /sys >/dev/null 2>&1
fi

这断话的意思是,如果/proc/mounts文件存在,便挂载proc类型的文件系统的proc设备到proc目录下,挂载sysfs类型的文件系统的sys设备到/sys目录下。那么,究竟proc文件系统是什么东西呢?

proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
 
2. proc的主要目录和文件

它的主要目录和文件结构如下:(/proc/)


复制代码
代码如下:

apm # 高级电源管理信息
bus # 总线配置信息(USB的配置也记录在此)
cmdline # 内核命令行
Cpuinfo # 关于Cpu信息
Devices # 可以用到的设备(块设备/字符设备)
Dma # 使用的DMA通道
Filesystems # 支持的文件系统
Interrupts # 中断的使用
Ioports # I/O端口的使用
Kcore # 内核核心印象
Kmsg # 内核消息
Ksyms # 内核符号表
Loadavg # 负载均衡
Locks # 内核锁
Meminfo # 内存信息
Misc # 杂项
Modules # 加载模块列表(可以想成是驱动程序)
Mounts # 加载的文件系统
Partitions # 系统识别的分区表
PCI # 在PCI总线上,每台设备的详细情况(可以使用lspci来查看)
Rtc # 实时时钟
Slabinfo Slab # 池信息
Stat # 全面统计状态表
Swaps # 对换空间的利用情况
Version # 内核版本
Uptime # 系统正常运行时间

除了以上的目录外,主机上正在运行的各进程的PID号也以目录名的形式存在于/proc目录下。其中cmdline文件和environ文件值得一提,前者表示启动这个进程的命令串;后者是这个进程的环境变量的内容。它们均可以使用cat命令进行查看。

如图1所示,2088号进程是由startx命令产生的,即当前的Xwindows模式。


图1

3. proc目录下的cmdline是什么
在/etc/rc.d/sysinit脚本的306行出现了如下代码:

复制代码
代码如下:

cmdline=$(cat /proc/cmdline)

意思是把/proc/cmdline的内容赋予cmdline变量。而前面说过/proc/cmdline的内容指的是内核命令行。我们先不去纠缠什么是内核命令行,来看看它的内容。如图2所示。


图2

可以发现,它的内容是一段一段离散的字段。很显然这些字符是由内核产生的,它们表示了系统运行环境的一些基本信息,它们在系统完全启动之前就已经确定。这些字段就像标志位一样,因此后续的启动,就可以根据这些“标志位”来进行相关的启动操作。

那么它是由谁产生的呢?粗糙的讲,可以说是由grub生成的。Grub(Grand Unified Bootloader)引导加载程序,它是计算机读取完BIOS信息后,从第一个启动设备的MBR中被读取的内容。没有它,核心根本就不能被加载到系统上。Grub的功能有很多,我们暂时不需要深入的了解。其中的kernel语句,告诉了磁盘的MBR到什么地方去读取系统内核以及辅助系统启动的initrd(InitalRAM Disk)印象文件在什么地方。同时可以加入一些启动参数,如是否打开RHGB,是否强制扫描...而这些字段,都通通的反映在了内核虚拟文件系统/proc里面的cmdline里面。

因此,当我们需要在系统启动的时候判断某些服务是否被激活时,当然要看看/proc/cmdline里面的内容啦。



相关阅读:
css+filter实现简单的图片透明效果
实例详解Android解决按钮重复点击问题
Java+Nginx实现POP、IMAP、SMTP邮箱代理服务
Win7使用还原功能找回丢失系统文件的方法
Js实现无刷新删除内容
Win10 TH2正式版秋季更新内容曝光 共有十八处改进
ECMAScript6块级作用域及新变量声明(let)
Win10准正式版10240出现UAC窗口提示问题
最简单的Oracle数据恢复 select as of使用方法
苹果Mac查看硬盘是否开启ACHI模式的方法图解
php实现数组筛选奇数和偶数示例
谈一谈js中的执行环境及作用域
使用getBoundingClientRect方法实现简洁的sticky组件的方法
asp.net 图标提取以及图标转换的实例代码
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 初中初三作文800字:灵、逍、月 “六一”送给长辈的祝福语 刺猬姑娘的月夜故事 电力论文:对建设学习型供电企业的浅析和实践 父母感动故事:清明节的诺言 美丽的秋水广场 安全性会议开场白 小学三年级作文400字:校运会上的百米短跑 离开,为了爱 冰糖葫芦虽小商机大 中秋节诗歌散文:爱中秋 秦兵马俑作文200字 学着习惯寂寞 心决定一切 高中高一作文400字:留心处处皆学问 雷伊PK盖亚作文1100字 小学2011年教育行风建设工作汇报 长篇小说《蛋壳》第一三八节 只是因为你 照片里的故事作文1500字 柳暗花明之间作文600字 经典语录 时间不是让人忘了痛,是让人习惯了痛 关于红色经典诗词三首 节目排练 读《丑小鸭》有感800字 一段感人的情话 好习惯伴你成长主题班会 高中高二作文900字:我的春节故事 对三位老师说的心里话作文300字 我县农村村务公开情况的调研报告 给战士的八一建军节祝福语大全 村主任2015年述职述廉报告 化工机械应届生求职信范文 至尊宝的忧伤 大学活动方案 和吴处士题村叟壁 水库管理处年终工作总结 入党积极分子思想汇报范文3000字 Y教授的“阴谋论” 小学四年级作文600字:下象棋 十三岁的故事读后感 写人作文450字:我的说明书 高中高二作文1200字:我的童年 才发现,离开你后我依然很想你 一个人若已到了没有任何东西可以依赖的时候,往往会变得坚强起来 电影少年毛泽东观后感 2015元宵节祝福短信大全 等你的夜 一行行心事涓涓诉说,夏虫在啾心作文300字 桃源行

Copyright © 2016 phpStudy |