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 交通频道 作文范文 相伴三年 物是人已非 扛台阁_元宵节作文1000字 平方再大,心依旧冷 你在忙什么 影响一生的职场经验_职场励志 雪花的快乐作文400字 赵州桥400字作文 小学四年级作文400字:月夜繁星 面纱 幸运星期五作文300字 我入队我自豪 我的小外甥作文400字 2015影视投资合同范本 企业管理名言警句 无法评估 红树林作文500字 初中初一作文650字:我的国史老师——国史十六讲 生日逢春 2015大学计划书范文800字 大学生村官如何实践两学一做学习教育活动 寒梅,你为谁绽放 夜泊牛渚怀古 同李五夕次香山精舍访宪上人 小学四年级作文350字:读生长的力量有感 2015社区中秋节工作总结 “无籽”西瓜作文400字 冷笑话新鲜出炉,太逗银了,看完我差点笑晕了! 琵琶仙·叹牡丹 是否有一天,失去了才会珍惜。 青春,只属于我!作文300字 县工商局年度宣传工作总结 读《跨越海峡的生命桥》有感450字 实习证明书 我的理想作文1000字 经典座右铭大全 三欶崇恩黄龙禅院赋 学校五四青年节活动主持稿 竞聘教导主任演讲稿 人到老年感悟 地委宣传副部长科学发展观调研报告 长得年轻,是因为你心里善良。 父母恩重如山 服装销售店长年终工作总结 拖欠农民建筑工工资申诉书 散文三节 六一儿童节庆祝活动主持人串词 墨下纸笺....搁浅? 三月末,未现微雨 倚望风雨作文400字

Copyright © 2016 phpStudy |