0°

/PROC文件系统

Linux版的ps和top命令都从/proc目录读取进程状态信息,内核把有关系统状态的各种有意义的信息都放在这个伪目录里。虽然这个目录叫做/proc,但是它里面的信息却并不局限于进程信息,内核产生的所有状态信息和统计数据都在这里。用户可以通过向/proc下的适当文件写入数据的方法来修改某些参数。

虽然使用诸如vmstat和ps这样的前端命令是访问某些信息最方便的办法,但是有些不那么常用的信息就必须从/proc目录下直接读取。应该花时间多浏览一下这个目录,以熟悉里面的各项内容。
man proc命令也能给出一些有用处的技巧和窍门。

由于内核随时都在创建/proc下文件的内容(在读它们的同时),所以/proc下的大多数文件在用ls -l命令列出时都显示为空。用户应该用cat或者more去看这些文件里的内容是什么。但是要注意,有几个文件包含或者链接到了二进制数据,如果直接去看的话,会搞乱终端模拟程序的显示。

进程特有的信息都分别被放到了按PID起名字的子目录里。例如,/proc/1一定是包含init信息的目录,下面是各个进程最有用的文件。


/proc目录下的进程信息文件(数字编号的子目录)
cmd			//进程正在执行的命令或者程序
cmdline			//进程的完整命令行(以null分隔)
cwd			//链到进程当前目录的符号链接
environ			//进程的环境变量(以null分隔)
exe			//链到正被执行的文件的符号链接
fd			//子目录,其中包含链到每个打开文件的描述符的链接
maps		//内存映射信息(共享段、库等)
root		//链到进程的根目录(由chroot设置)的符号链接
stat		//进程的总体状态信息(ps最擅长解析这些信息)
statm		//内存使用情况的信息

在cmdline和environ文件里的各个部分用空字符(null)而不是换行符(newline)分隔。用户可以借助命令tr “\000” “\n”过滤这些文件的内容,使之可读性更好。

子目录fd里以符号链接形式表示进程打开的文件。连接到管道或者网络套接口的文件描述符没有相关联的文件名。内核提供一种通用的描述形式作为链接目标。

maps文件用于确定一个程序链接到哪些库或者依赖于哪些库。

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论