Linux proc目录

/proc的作用

Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。

基于/proc文件系统如上所述的特殊性,其内的文件也常被称作虚拟文件,并具有一些独特的特点。例如,其中有些文件虽然使用查看命令查看时会返回大量信息,但文件本身的大小却会显示为0字节。此外,这些特殊文件中大多数文件的时间及日期属性通常为当前系统时间和日期,这跟它们随时会被刷新(存储于RAM中)有关。

为了查看及使用上的方便,这些文件通常会按照相关性进行分类存储于不同的目录甚至子目录中,如/proc/scsi目录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运行的进程的相关信息,其中N为正在运行的进程(可以想象得到,在某进程结束后其相关目录则会消失)。

下图对/proc中部分元素进行一次交互查询的结果。它显示的是/proc文件系统的根目录中的内容。


image.png

/proc目录下常见的文件介绍

/proc/cpuinfo

处理器的相关信息的文件;


image.png

总核数 = 物理CPU个数 X 每颗物理CPU的核数
总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq

查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l

查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

/proc/meminfo

系统中关于当前内存的利用状况等的信息,常由free命令使用;可以使用文件查看命令直接读取此文件,其内容显示为两列,前者为统计属性,后者为对应的值;


image.png

/proc/uptime

系统上次启动以来的运行时间,如下所示,其第一个数字表示系统运行时间,第二个数字表示系统空闲时间,单位是秒;


image.png

/proc/version

当前系统运行的内核版本号,


image.png

/proc/swaps

当前系统上的交换分区及其空间利用信息,如果有多个交换分区的话,则会每个交换分区的信息分别存储于/proc/swap目录中的单独文件中,而其优先级数字越低,被使用到的可能性越大。下面是作者系统中只有一个交换分区时的输出信息;


image.png

/proc/vmstat

当前系统虚拟内存的多种统计数据,信息量可能会比较大,这因系统而有所不同,可读性较好


image.png

/proc/{pid}介绍

左边是一系列数字编号的文件。每个实际上都是一个目录,表示系统中的一个进程

在 GNU/Linux 中创建的第一个进程是 init 进程,因此它的 process-id 为1.对这个目录执行一个 ls 命令,这会显示很多文件。每个文件都提供了有关这个特殊进程的详细信息。如下图所示:


image.png

cmdline

启动当前进程的完整命令,但僵尸进程目录中的此文件不包含任何信息;

注:16008是mysql的进程号
cat /proc/16008/cmdline
结果为:
/usr/sbin/mysqld

cwd

指向当前进程运行目录的一个符号链接

注:16008是mysql的进程号
sudo ls -l /proc/16008/cwd
结果为:
/proc/16008/cwd -> /var/lib/mysql
说明cwd代表的目录,就是指向/var/lib/mysql的目录

environ

当前进程的环境变量列表,彼此间用空字符(NULL)隔开;变量用大写字母表示,其值用小写字母表示;

注:16008是mysql的进程号
cat /proc/16008/environ
结果为:
LANG=en_US.utf8PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binNOTIFY_SOCKET=/run/systemd/notifyHOME=/var/lib/mysqlLOGNAME=mysqlUSER=mysqlSHELL=/bin/falseMYSQLD_PARENT_PID=1

exe

指向启动当前进程的可执行文件(完整路径)的符号链接,通过/proc/N/exe可以启动当前进程的一个拷贝

fd

这是个目录,包含当前进程打开的每一个文件的文件描述符(file descriptor),这些文件描述符是指向实际文件的一个符号链接;

注:16008是mysql的进程号


image.png

limits

当前进程所使用的每一个受限资源的软限制、硬限制和管理单元

注:16008是mysql的进程号
[图片上传中...(image.png-aa9506-1526555458034-0)]

参考

  • /proc官方文档
  • 使用/proc文件系统来访问 Linux 内核的内容
  • 深入理解linux系统下proc文件系统内容

你可能感兴趣的:(Linux proc目录)