前言
Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息。而通过了解这些信息,能够帮助我们定位疑难问题。
下面介绍通过proc文件系统能够获取哪些有用的信息。
proc目录
进入到/proc目录下,查看所有文件:
上面列出的是/proc目录中一些进程相关的目录,每个目录中是当程本身相关信息的文件。
很多获取系统信息的命令都是通过读取/proc下相关文件内容获取的,因此我们需要简单了解/proc下的文件,帮助我们获取更多信息。毕竟它是一个巨大的信息宝库。
/proc/cpuinfo文件
这个文件提供了有关系统CPU的多种信息。这些信息是从内核里对CPU的测试代码中得到的。
列出的内容较多,这里不展示。举例说明几点,其他内容可自行查阅:
model name,CPU信息。例如本人的CPU信息为:Intel® Core™ i5-4200U CPU @ 1.60GHz,表明是intel的i5 低压处理器
cache size,CPU二级缓存大小。
查看网络流量情况/proc/net
此目录下的文件描述或修改了联网代码的行为。可以通过使用tcp,arp,netstat,route,dev和ipfwadm等命令设置或查询这些特殊文件中的许多文件。
查看进程相关信息
以数字命名的文件夹中存储着进程的相关信息。而数字本身就是该进程的pid。
我们随意进入一个进程id的进程信息文件夹,例如:
我们可以看到该进程的很多内容,包括:
cmdline 用于开始进程的命令
cwd 当前进程工作目录的一个符号链接
environ 可用进程环境变量的列表
exe 正在进程中运行的程序链接
fd/ 这个目录包含了进程打开的文件描述符
mem 进程在内存中的内容
status 进程的状态信息
statm 进程的内存使用信息
limits 进程的软限制,硬限制等信息
maps 进程的内存区域映射信息
stack 当前进程的内核调用栈信息
syscall 进程正在执行的系统调用
task 进程下的线程信息
…
每一个/proc/pid目录中还存在一系列目录和文件,这些文件和目录记录的都是关于pid对应进程的信息。如果想要知道某个进程当前更多的状态信息,只需要知道该进程的pid,参考<Linux ps命令常见实战用法>。然后读取/proc/pid下的文件夹或文件内容即可。
遍历/proc就能够看到所有的/proc/pid的目录,当然通过 ls -al /proc的方式也可以看到所有的信息。
总结
/proc目录下还有许多目录,但是本文并没有介绍。如果有兴趣。可以自行阅读proc手册。
参考:https://blog.spoock.com/2019/10/08/proc/
欢迎关注公众号【程序猿编码】,添加本人微信号(17865354792),回复:领取学习资料,网盘资料有如下: