Linux中的proc文件系统介绍和指南

2021年3月24日13:58:55 发表评论 1,310 次浏览

Proc文件系统(procfs)是在系统启动时动态创建的虚拟文件系统, 并在系统关闭时解散。

它包含有关当前正在运行的进程的有用信息, 被视为内核的控制和信息中心。

proc文件系统还提供内核空间和用户空间之间的通信介质。

下面是我PC上/ proc的快照。

ls -l /proc

total 0
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 10
dr-xr-xr-x  9 avahi        avahi          0 Mar 31 21:34 1034
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1036
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1039
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1041
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1043
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1044
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1048
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 105
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1078
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 11
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1121
dr-xr-xr-x  9 lp           lp             0 Mar 31 21:34 1146
dr-xr-xr-x  9 postgres     postgres       0 Mar 31 21:34 1149
dr-xr-xr-x  9 mysql        mysql          0 Mar 31 21:34 1169
dr-xr-xr-x  9 postgres     postgres       0 Mar 31 21:34 1180
dr-xr-xr-x  9 postgres     postgres       0 Mar 31 21:34 1181
dr-xr-xr-x  9 postgres     postgres       0 Mar 31 21:34 1182
dr-xr-xr-x  9 postgres     postgres       0 Mar 31 21:34 1183
dr-xr-xr-x  9 postgres     postgres       0 Mar 31 21:34 1184
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 1186
dr-xr-xr-x  9 root         root           0 Mar 31 21:34 12

...

如果列出目录, 则会发现对于进程的每个PID, 都有专用的目录。

你只能使用在终端上检查目录

ls -l /proc | grep '^d'

现在, 我们检查分配的PID的特定过程, 你可以从ps命令

ps -aux

输出如下:

Linux中的proc文件系统1

ps -aux命令输出

现在使用PID = 7494检查突出显示的进程, 你可以检查/ proc文件系统中是否有该进程的条目。

ls -ltr /proc/7494

输出如下:

total 0
-rw-r--r--  1 mandeep mandeep 0 Apr  1 01:14 oom_score_adj
dr-xr-xr-x 13 mandeep mandeep 0 Apr  1 01:14 task
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:16 status
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:16 stat
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:16 cmdline
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:17 wchan
-rw-r--r--  1 mandeep mandeep 0 Apr  1 01:17 uid_map
-rw-rw-rw-  1 mandeep mandeep 0 Apr  1 01:17 timerslack_ns
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:17 timers
-r--------  1 mandeep mandeep 0 Apr  1 01:17 syscall
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:17 statm
-r--------  1 mandeep mandeep 0 Apr  1 01:17 stack
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:17 smaps
-rw-r--r--  1 mandeep mandeep 0 Apr  1 01:17 setgroups
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:17 sessionid
-r--r--r--  1 mandeep mandeep 0 Apr  1 01:17 schedstat
-rw-r--r--  1 mandeep mandeep 0 Apr  1 01:17 sched
lrwxrwxrwx  1 mandeep mandeep 0 Apr  1 01:17 root -> /proc/2341/fdinfo
-rw-r--r--  1 mandeep mandeep 0 Apr  1 01:17 projid_map
-r--------  1 mandeep mandeep 0 Apr  1 01:17 personality

...

在linux中, / proc在名为/ proc / PID的目录中包含每个正在运行的进程(包括内核进程)的目录, 这些目录存在:

目录 描述
/ proc / PID / cmdline 命令行参数。
/ proc / PID / cpu 执行它的当前和最后一个cpu。
/ proc / PID / cwd 链接到当前工作目录。
/ proc / PID /环境 环境变量的值。
/ proc / PID / exe 链接到此过程的可执行文件。
/ proc / PID / fd 目录, 其中包含所有文件描述符。
/ proc / PID /地图 内存映射到可执行文件和库文件。
/ proc / PID / mem 此过程保留的内存。
/ proc / PID / root 链接到此过程的根目录。
/ proc / PID / stat 流程状态。
/ proc / PID / statm 进程内存状态信息。
/ proc / PID /状态 易于阅读的过程状态。

/ proc文件系统中的其他一些文件是:

文件 描述
/ proc /加密 可用密码模块列表
/ proc / diskstats 每个逻辑磁盘设备的信息(包括设备号)
/ proc /文件系统 列出时内核支持的文件系统列表
/ proc / kmsg 保留内核输出的消息
/ proc / meminfo 内核如何管理其内存的摘要。
/ proc / scsi 有关通过SCSI或RAID控制器连接的任何设备的信息
/ proc / tty 有关当前端子的信息
/ proc /版本 包含Linux内核版本, 发行版本号, gcc版本号(用于构建内核)以及与当前正在运行的内核版本有关的任何其他相关信息

例如, / proc / crypto的内容是

less /proc/crypto

name         : ccm(aes)
driver       : ccm_base(ctr(aes-aesni), cbcmac(aes-aesni))
module       : ccm
priority     : 300
refcnt       : 2
selftest     : passed
internal     : no
type         : aead
async        : no
blocksize    : 1
ivsize       : 16
maxauthsize  : 16
geniv        : 

name         : ctr(aes)
driver       : ctr(aes-aesni)
module       : kernel
priority     : 300
refcnt       : 3
selftest     : passed
internal     : no
type         : blkcipher
blocksize    : 1
min keysize  : 16
max keysize  : 32
ivsize       : 16
geniv        : chainiv

...

参考文献:

1)

/ wiki / Procfs

2)

/ proc


木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: