linux系统proc目录进程信息详解

 Proc文件系统是一个实时的,常驻内存的文件系统,它跟踪进程在你机器上的运行情况和你系统的状态。运维
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

 

Proc 文件系统是一个实时的,常驻内存的文件系统,它跟踪进程在你机器上的运行情况和你系统的状态。/proc文件系统是常驻虚拟内存并且维持着操作系统的动态数据。大部分的 /proc文件系统信息被实时更新来与当前操作系统的状态一致。/proc文件系统的内容能被任何有相应权限的人读取。但是,/proc文件系统的特定的 部分只能被这个进程的拥有者和root用户读取。/proc文件系统的内容从特定的/proc目录得到数据并且显示出来,它们有很多用途。

下面是一个PROC文件系统的例子,可以看出proc文件系统里面有很多数字,其它的信息相对容易理解,这里不作介绍,本文主要深入分析proc目录下的数字信息。
#cd proc
#ls
1    4   9          diskstats    iomem    meminfo     self      uptime

10   5   97         driver       ioports  misc        slabinfo  version

114  6   buddyinfo  execdomains  irq      mounts      stat      vmstat

126  7   bus        filesystems  kcore    mtd         swaps     zoneinfo

128  8   cmdline    fs           kmsg     net         sys

2    85  cpuinfo    ide          loadavg  partitions  sysvipc

3    88  devices    interrupts   locks    pci         tty

你看到的上面列出的那些数字目录代表进程,这些进程在我们对/proc文件系统作快照时正运行在机器上。我们随便看一个进程目录的内容:

# ll 126
total 0

-r--r--r--    1 root     root            0 Jan  1 00:08 cmdline

lrwxrwxrwx    1 root     root            0 Jan  1 00:09 cwd -> /proc

-r--------    1 root     root            0 Jan  1 00:09 environ

lrwxrwxrwx    1 root     root            0 Jan  1 00:09 exe -> /bin/bash

dr-x------    2 root     root            0 Jan  1 00:00 fd

-r--r--r--    1 root     root            0 Jan  1 00:09 maps

-rw-------    1 root     root            0 Jan  1 00:09 mem

-r--r--r--    1 root     root            0 Jan  1 00:00 mounts

-rw-r--r--    1 root     root            0 Jan  1 00:09 oom_adj

-r--r--r--    1 root     root            0 Jan  1 00:09 oom_score

lrwxrwxrwx    1 root     root            0 Jan  1 00:09 root -> /

-r--r--r--    1 root     root            0 Jan  1 00:09 smaps

-r--r--r--    1 root     root            0 Jan  1 00:08 stat

-r--r--r--    1 root     root            0 Jan  1 00:09 statm

-r--r--r--    1 root     root            0 Jan  1 00:08 status

dr-xr-xr-x    3 root     root            0 Jan  1 00:09 task

看上面输出的第一行。

-r--r--r--    1 root     root            0 Jan  1 00:08 cmdline

"cmdline",这个文件包含整个用来产生进程的命令行。这个文件的内容是命令行参数包括传递来启动进程的所有参数。所有包含在这个文件的信息即命令和各个启动参数,没有任何的格式和任何的空格。

lrwxrwxrwx    1 root     root            0 Jan  1 00:09 cwd -> /proc

"cwd",像我们从上面看见的,这是一个符号链接,它指向进程的当前工作目录。

-r--------    1 root     root            0 Jan  1 00:09 environ

"environ"包括在VARIABL=value为这个进程定义的所有的环境变量。正如"cmdline"一样,包含在文件中的命令和各个参数的信息没有任何的格式和空格。

lrwxrwxrwx    1 root     root            0 Jan  1 00:09 exe -> /bin/ver

"exe",这是一个符号链接指向启动当前进程的可执行文件。

dr-x------    2 root     root            0 Jan  1 00:00 fd

"fd",这个目录包括被指定进程打开的文件描述符,如果一个进程打开的文件描述符过多,会造成打开文件失败,通过检查这个目录可以查找打开文件失败的原因。

-r--r--r--    1 root     root            0 Jan  1 00:09 maps

"maps", 当你打出这个命名管道的内容,你可以看到进程的地址空间部分,当前被映射到一个文件。这个部分,从左到右是:和这个映射有关的地址空间,和这个映射有关的 权限,距离文件开始(即这个映射开始的地方)的偏移量,这个映射文件所在的设备,文件的inode号,最后是文件名本身。

"root",这是一个符号链接指向这个进程的/proc目录。

-r--r--r--    1 root     root            0 Jan  1 00:08 status

"status",这个文件给你有关进程名的信息,它的当前的状态,睡眠或者清醒,它的PID,UID,PPID和大量其它基本信息。这个信息可以在一个更简单和结构化的语法中看到,通过使用工具如"ps"和"top"。

本文来源21aspnet,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/2493

发表评论