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

Proc文件系统(procfs)是在系统启动时动态创建的虚拟文件系统, 并在系统关闭时解散。
它包含有关当前正在运行的进程的有用信息, 被视为内核的控制和信息中心。
proc文件系统还提供内核空间和用户空间之间的通信介质。
下面是我PC上/ proc的快照。

ls -l /proctotal 0dr-xr-xr-x9 rootroot0 Mar 31 21:34 1dr-xr-xr-x9 rootroot0 Mar 31 21:34 10dr-xr-xr-x9 avahiavahi0 Mar 31 21:34 1034dr-xr-xr-x9 rootroot0 Mar 31 21:34 1036dr-xr-xr-x9 rootroot0 Mar 31 21:34 1039dr-xr-xr-x9 rootroot0 Mar 31 21:34 1041dr-xr-xr-x9 rootroot0 Mar 31 21:34 1043dr-xr-xr-x9 rootroot0 Mar 31 21:34 1044dr-xr-xr-x9 rootroot0 Mar 31 21:34 1048dr-xr-xr-x9 rootroot0 Mar 31 21:34 105dr-xr-xr-x9 rootroot0 Mar 31 21:34 1078dr-xr-xr-x9 rootroot0 Mar 31 21:34 11dr-xr-xr-x9 rootroot0 Mar 31 21:34 1121dr-xr-xr-x9 lplp0 Mar 31 21:34 1146dr-xr-xr-x9 postgrespostgres0 Mar 31 21:34 1149dr-xr-xr-x9 mysqlmysql0 Mar 31 21:34 1169dr-xr-xr-x9 postgrespostgres0 Mar 31 21:34 1180dr-xr-xr-x9 postgrespostgres0 Mar 31 21:34 1181dr-xr-xr-x9 postgrespostgres0 Mar 31 21:34 1182dr-xr-xr-x9 postgrespostgres0 Mar 31 21:34 1183dr-xr-xr-x9 postgrespostgres0 Mar 31 21:34 1184dr-xr-xr-x9 rootroot0 Mar 31 21:34 1186dr-xr-xr-x9 rootroot0 Mar 31 21:34 12...

如果列出目录, 则会发现对于进程的每个PID, 都有专用的目录。
你只能使用在终端上检查目录
ls -l /proc | grep '^d'

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

输出如下:
Linux中的proc文件系统介绍和指南

文章图片
ps -aux命令输出
现在使用PID = 7494检查突出显示的进程, 你可以检查/ proc文件系统中是否有该进程的条目。
ls -ltr /proc/7494

输出如下:
total 0-rw-r--r--1 mandeep mandeep 0 Apr1 01:14 oom_score_adjdr-xr-xr-x 13 mandeep mandeep 0 Apr1 01:14 task-r--r--r--1 mandeep mandeep 0 Apr1 01:16 status-r--r--r--1 mandeep mandeep 0 Apr1 01:16 stat-r--r--r--1 mandeep mandeep 0 Apr1 01:16 cmdline-r--r--r--1 mandeep mandeep 0 Apr1 01:17 wchan-rw-r--r--1 mandeep mandeep 0 Apr1 01:17 uid_map-rw-rw-rw-1 mandeep mandeep 0 Apr1 01:17 timerslack_ns-r--r--r--1 mandeep mandeep 0 Apr1 01:17 timers-r--------1 mandeep mandeep 0 Apr1 01:17 syscall-r--r--r--1 mandeep mandeep 0 Apr1 01:17 statm-r--------1 mandeep mandeep 0 Apr1 01:17 stack-r--r--r--1 mandeep mandeep 0 Apr1 01:17 smaps-rw-r--r--1 mandeep mandeep 0 Apr1 01:17 setgroups-r--r--r--1 mandeep mandeep 0 Apr1 01:17 sessionid-r--r--r--1 mandeep mandeep 0 Apr1 01:17 schedstat-rw-r--r--1 mandeep mandeep 0 Apr1 01:17 schedlrwxrwxrwx1 mandeep mandeep 0 Apr1 01:17 root -> /proc/2341/fdinfo-rw-r--r--1 mandeep mandeep 0 Apr1 01:17 projid_map-r--------1 mandeep mandeep 0 Apr1 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/cryptoname: ccm(aes)driver: ccm_base(ctr(aes-aesni), cbcmac(aes-aesni))module: ccmpriority: 300refcnt: 2selftest: passedinternal: notype: aeadasync: noblocksize: 1ivsize: 16maxauthsize: 16geniv: name: ctr(aes)driver: ctr(aes-aesni)module: kernelpriority: 300refcnt: 3selftest: passedinternal: notype: blkcipherblocksize: 1min keysize: 16max keysize: 32ivsize: 16geniv: chainiv...

参考文献:
1)
/ wiki / Procfs
2)
【Linux中的proc文件系统介绍和指南】/ proc

    推荐阅读