关于/proc文件系统

来源:互联网 发布:最优化理论的实例 编辑:程序博客网 时间:2024/06/05 11:11

可以将其中的内容分为三类来看:以数字命名的文件夹,非数字命名的文件夹和单纯的文件。
全数字的文件夹代表了系统的所有进程,进程的PID即为文件夹名。如果仔细查看文件夹属性的话,这一类文件夹都是只读的。值得注意的是这里有一个特殊的符号连接“self”,代表了系统中的当前正在执行的进程。关于进程的更详细的内容就都包含在文件夹中的各个文件中了。那些非数字命名的文件夹比如:driver,bus,scsi等等一般表示了系统不同模块的相应信息。其中的sys是设置内核运行时参数很重要的途径。另外就是一些文件了,比如:cpuinfo,meminfo,devices等等,直接表示系统相应硬件信息。常用的总结如下:

/proc/cpuinfo:记录了这台机器的cpu相关信息。/proc/meminfo:记录了相应的内存信息。/proc/apm:包含了高级电源管理(Advanced Power Management)相关的信息。/proc/cmdline:记录了系统启动的时候传递给内核的一些参数。/proc/loadavg:记录了系统之前一分钟,五分钟和十分钟的cpu负载。/proc/uptime:记录了系统从启动开始到现在经过的秒数和系统空闲的秒数。

上边说这里的内容都是由系统实时生成的,而且大部分内容都是只读的,所以想要查看其中某一文件的信息,只需要使用cat就可以了(习惯用法)。比如查看cpu信息,命令如下:

$cat/proc/cpuinfo
关于进程信息

上边已经说过,以数字命名的文件夹都是对应相应的进程的信息。随便选一个文件夹,查看一下内容大致如下:

allen@allen-laptop:/proc/3348$ ls
attr cpuset io mountinfo pagemap smaps task
auxv cwd latency mounts personality stack wchan
cgroup environ limits mountstats root stat
clear_refs exe loginuid net sched statm
cmdline fd maps oom_adj schedstat status
coredump_filter fdinfo mem oom_score sessionid syscall

3348这个进程是我正在运行的bash的进程。需要注意的是当你进入一个不属于你的进程文件夹之后,某些文件可能权限不允许而不能访问。和上边情况类似,每个文件都表示所属进程某一方面的信息。常用的如下:

cmdline:表示进程启动时给它传递的所有参数。cwd:一个连接到此进程当前工作目录的符号连接。environ:包含此进程的全部环境变量。fd/:包含此进程所属的全部文件描述符的符号连接,可能会指向正在使用的文件或设备。status:包含全部的进程状态信息,监控进程主要查看这个文件。

平时常用来显示进程信息的ps和top命令就是通过读取/proc文件系统中的内容来获取进程信息的。

设置内核参数

虽说/proc下大部分文件都是只读的,仍然有一小部分是管理员可写的。其中最重要的就是/proc/sys文件夹中的内容。在这里管理员可以动态设定系统内核的各种参数,而不必等机器重启之后才生效。同样应为这里的内容是实时变化的,使用不同编辑器打开->编辑->保存这样的方式来设置参数是不可行的。因为很可能在你编辑内容的时候,它已经发生了变化。正确的方法是使用echo命令。比如你想修改系统默认允许进程打开最大文件描述上限,可以这样:

#echo "16384" > /proc/sys/fs/file-max
0 0
原创粉丝点击