linux下/proc文件夹

  1. 名字
  2. 描述
  3. 目录结构
    1. /proc/[pid]
      1. /proc/[pid]/attr
      2. /proc/[pid]/autogroup
      3. /proc/[pid]/auxv
      4. /proc/[pid]/cgroup
      5. /proc/[pid]/clear_refs
      6. /proc/[pid]/cmdline
      7. /proc/[pid]/comm
      8. /proc/[pid]/coredump_filter
      9. /proc/[pid]/cpuset
      10. /proc/[pid]/cwd
      11. /proc/[pid]/environ
      12. /proc/[pid]/exe
      13. /proc/[pid]/fd
      14. /proc/[pid]/fdinfo
      15. /proc/[pid]/git_map
      16. /proc/[pid]/io
      17. /proc/[pid]/limits
      18. /proc/[pid]/loginuid
      19. /proc/[pid]/map_files
      20. /proc/[pid]/maps
      21. /proc/[pid]/mem
      22. /proc/[pid]/mountinfo
      23. /proc/[pid]/mounts
      24. /proc/[pid]/mountstats
      25. /proc/[pid]/net
      26. /proc/[pid]/ns
      27. /proc/[pid]/numa_maps
      28. /proc/[pid]/oom_adj
      29. /proc/[pid]/oom_score
      30. /proc/[pid]/oom_score_adj
      31. /proc/[pid]/pagemap
      32. /proc/[pid]/personality
      33. /proc/[pid]/projid_map
      34. /proc/[pid]/root
      35. /proc/[pid]/sched
      36. /proc/[pid]/schedstat
      37. /proc/[pid]/sessionid
      38. /proc/[pid]/setgroups
      39. /proc/[pid]/smaps
      40. /proc/[pid]/stack
      41. /proc/[pid]/stat
      42. /proc/[pid]/statm
      43. /proc/[pid]/status
      44. /proc/[pid]/syscall
      45. /proc/[pid]/task
      46. /proc/[pid]/uid_map
      47. /proc/[pid]/wchan
      48. /proc/[pid]/mmap
    2. /proc/acpi
    3. /proc/apm
    4. /proc/buddyinfo
    5. /proc/bus
      1. /proc/bus/input
      2. /proc/bus/pccard
      3. /proc/bus/pci
    6. /proc/cgroups
    7. /proc/cmdline
    8. /proc/config.gz
    9. /proc/consoles
    10. /proc/cpuinfo
    11. /proc/devices
    12. /proc/dirquota
    13. /proc/diskstats
    14. /proc/dma
    15. /proc/driver
    16. /proc/execdomains
    17. /proc/fb
    18. /proc/filesystems
    19. /proc/fs
    20. /proc/hookers
    21. /proc/hotfix_info
    22. /proc/ide
    23. /proc/interrupts
    24. /proc/iomem
    25. /proc/ioports
    26. /proc/ipmi
    27. /proc/irq
    28. /proc/kallsyms
    29. /proc/kcore
    30. /proc/keys
    31. /proc/key-users
    32. /proc/kmsg
    33. /proc/ksyms
    34. /proc/kpagecount
    35. /proc/kpageflags
    36. /proc/loadavg
    37. /proc/locks
    38. /proc/malloc
    39. /proc/mdstat
    40. /proc/meminfo
    41. /proc/misc
    42. /proc/modules
    43. /proc/mounts
    44. /proc/mtrr
    45. /proc/net
      1. /proc/net/arp
      2. /proc/net/dev
      3. /proc/net/dev_mcast
      4. /proc/net/igmp
      5. /proc/net/rarp
      6. /proc/net/raw
      7. /proc/net/snmp
      8. /proc/net/tcp
      9. /proc/net/udp
      10. /proc/net/unix
    46. /proc/pagetypeinfo
    47. /proc/partitions
    48. /proc/pci
    49. /proc/profile
    50. /proc/sched_debug
    51. /proc/schedstat
    52. /proc/scsi
      1. /proc/scsi/scsi
      2. /proc/scsi/[drivername]
    53. /proc/self
    54. /proc/slabinfo
    55. /proc/softirqs
    56. /proc/stat
    57. /proc/swaps
    58. /proc/sys
      1. /proc/sys/abi
      2. /proc/sys/debug
      3. /proc/sys/dev
      4. /proc/sys/fs
      5. /proc/sys/kernel
      6. /proc/sys/net
      7. /proc/sys/proc
      8. /proc/sys/sunrpc
      9. /proc/sys/vm
    59. /proc/sysrq-trigger
    60. /proc/sysvipc
    61. /proc/tty
    62. /proc/uptime
    63. /proc/version
    64. /proc/vmallocinfo
    65. /proc/vmstat
    66. /proc/zoneinfo

名字

proc: 进程信息伪文件系统

描述

/proc 是一个位于内存中的伪文件系统, 被用作内核数据结构的接口, 而不仅仅 是解释说明 /dev/kmem. /proc 里的大多数文件都是只读的, 但也可 以通过写一些文件来改变内核变量.

目录结构

/proc/[pid]

/proc 目录里, 每个正在运行的进程都有一个以该进程 pid 命名的子目录, 其下包括如下的目录和伪文件.

/proc/[pid]/attr

  • current
  • exec
  • fscreate
  • keycreate
  • prev
  • sockcreate

TODO

/proc/[pid]/autogroup

TODO

/proc/[pid]/auxv

TODO

/proc/[pid]/cgroup

TODO

/proc/[pid]/clear_refs

TODO

/proc/[pid]/cmdline

该文件保存了进程的完整命令行. 如果该进程已经 被交换出内存, 或者该进程已经僵死, 那么就没有 任何东西在该文件里, 这时候对该文件的读操作将返回零 个字符. 该文件以空字符 null 而不是换行符作为结 束标志.

/proc/[pid]/comm

TODO

/proc/[pid]/coredump_filter

TODO

/proc/[pid]/cpuset

TODO

/proc/[pid]/cwd

一个符号连接, 指向进程当前的工作目录.
例如, 要找出进程 20 的 cwd, 你可以:

cd /proc/20/cwd; /bin/pwd

请注意 pwd 命令通常是 shell 内置的, 在这样的情况下可能
工作得不是很好.

/proc/[pid]/environ

该文件保存进程的环境变量, 各项之间以空字符分隔,
结尾也可能是一个空字符. 因此, 如果要输出进程 1 的环境变量,
你应该:

strings /proc/1/environ
# 旧的方式: (cat /proc/1/environ; echo) | tr ";\\000"; ";\\n";

/proc/[pid]/exe

也是一个符号连接, 指向被执行的二进制代码.

在 Linux 2.0 或者更早的版本下, 对 exe 特殊文件的 返回一个如下格式的字符串:

[设备号]:节点号

举个例子, [0301]:1502 就是某设备的 1502 节点, 该设备的主设备号为 03 (如 IDE, MFM 等驱动器), 从设备号为 01 (第一个驱动器的第一分区).

而在 Linux 2.2 下, 则给出命令的实际路径名.

另外, 该符号连接也可以正常析引用(试图打开 exe 文件实际上将打开一个可执行文件). 你甚至可以键入 /proc/[pid]/exe 来运行 [pid] 进程的副本.

/proc/[pid]/fd

进程所打开的每个文件都有一个符号连接在该子目 录里, 以文件描述符命名, 这个名字实际上是指向 真正的文件的符号连接,(和 exe 记录一样).
例如, 0 是标准输入, 1 是标准输出, 2 是标准错误, 等等.

程序有时可能想要读取一个文件却不想要标准输入,或者想写到一个文件却不想将输出送到标准输出去,那么就可以很有效地用如下的办法骗过(假定 -i 是输入文件的标志, 而 -o 是输出文件的标志)

\f(CWfoobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...\fP

这样就是一个能运转的过滤器. 请注意该方法不能 用来在文件里搜索, 这是因为 fd 目录里的文件是不可搜索的.

在 UNIX 类的系统下, /proc/self/fd/N 基本上就与 /dev/fd/N 相同. 实际上, 大多数的 Linux MAKEDEV 脚本都将 /dev/fd 符号连接到 [..]/proc/self/fd 上.

// TODO 待完善

/proc/[pid]/fdinfo

TODO

/proc/[pid]/git_map

TODO

/proc/[pid]/io

TODO

/proc/[pid]/limits

TODO

/proc/[pid]/loginuid

TODO

/proc/[pid]/map_files

TODO

/proc/[pid]/maps

该文件包含当前的映象内存区及他们的访问许可.

格式如下:

address           perms offset   dev   inode
00000000-0002f000 r-x-- 00000400 03:03 1401
0002f000-00032000 rwx-p 0002f400 03:03 1401
00032000-0005b000 rwx-p 00000000 00:00 0
60000000-60098000 rwx-p 00000400 03:03 215
60098000-600c7000 rwx-p 00000000 00:00 0
bfffa000-c0000000 rwx-p 00000000 00:00 0

address 是进程所占据的地址空间, perms 是权限集:

r = read
w = write
x = execute
s = shared
p = private (copy on write)

offset 是文件或者别的什么的偏移量, dev 是设备号(主设 备号:从设备号), 而 inode 则是设备的节点号. 0 表明没有 节点与内存相对应, 就象 bss 的情形.

在 Linux 2.2 下还增加了一个域给可用的路径名.

/proc/[pid]/mem

该文件并不是 mem (1:1) 设备, 尽管它们有相同的设备号.
/dev/mem 设备是做任何地址转换之前的物理内存, 而这里的 mem 文件是访问它的进程的内存.目前这个 mem 还不能 (内存映射)出去,而且可能一直要等到内核中增加了一个通用的以后才能实现.

/proc/[pid]/mountinfo

TODO

/proc/[pid]/mounts

TODO

/proc/[pid]/mountstats

TODO

/proc/[pid]/net

  • ….
    TODO

/proc/[pid]/ns

  • ipc
  • mnt
  • net
  • pid
  • user
  • uts

TODO

/proc/[pid]/numa_maps

TODO

/proc/[pid]/oom_adj

TODO

/proc/[pid]/oom_score

TODO

/proc/[pid]/oom_score_adj

TODO

/proc/[pid]/pagemap

TODO

/proc/[pid]/personality

TODO

/proc/[pid]/projid_map

TODO

/proc/[pid]/root

TODO

/proc/[pid]/sched

TODO

/proc/[pid]/schedstat

TODO

/proc/[pid]/sessionid

TODO

/proc/[pid]/setgroups

TODO

/proc/[pid]/smaps

TODO

/proc/[pid]/stack

TODO

/proc/[pid]/stat

TODO

/proc/[pid]/statm

TODO

/proc/[pid]/status

字段 释义
VmPeak 进程所使用的虚拟内存的峰值
VmSize 进程当前使用的虚拟内存的大小
VmLck 已经锁住的物理内存的大小(锁住的物理内存不能交换到硬盘)
VmHWM 进程所使用的物理内存的峰值
VmRSS 进程当前使用的物理内存的大小
VmData 进程占用的数据段大小
VmStk 进程占用的栈大小
VmExe 进程占用的代码段大小(不包括库)
VmLib 进程所加载的动态库所占用的内存大小(可能与其它进程共享)
VmPTE 进程占用的页表大小(交换表项数量)
VmSwap 进程所使用的交换区的大小

/proc/[pid]/syscall

TODO

/proc/[pid]/task

  • ……
    TODO

/proc/[pid]/uid_map

TODO

/proc/[pid]/wchan

TODO

/proc/[pid]/mmap

做的 maps 映射目录,是和 exe, fd/* 等类似的符号连接.
请注意 maps 包含了比 /proc/*/mmap 更多的信息, 所以应该废弃 mmap.

“;0”; 通常指 libc.so.4.

/proc/acpi

TODO

/proc/apm

TODO

/proc/buddyinfo

TODO

/proc/bus

TODO

/proc/bus/input

  • devices
  • handlers

TODO

/proc/bus/pccard

  • drivers

TODO

/proc/bus/pci

  • devices

TODO

/proc/cgroups

TODO

/proc/cmdline

TODO

/proc/config.gz

TODO

/proc/consoles

TODO

/proc/cpuinfo

保存了CPU 以及体系架构依赖条目的列表. 对于不同的系统架构有不同的列表, 共有的两项是 \fIcpu\fP\fIBogoMIPS\fP, \fIcpu\fP 可能是当前在用的 CPU, 而 \fIBogoMIPS\fP 则是内核初始化时计算出的一个系统常数.

/proc/devices

主设备号及设备组的列表, 文本格式. MAKEDEV 脚本使用该文件来维持内核的一致性.

/proc/dirquota

TODO

/proc/diskstats

释义
F1 253 设备号
F2 0 次设备号
F3 vda 设备名称
F4 3883348 成功完成读的请求次数
F5 274545 读请求的次数, 为了高效率可能会合并相邻的读和写,从而两次4k的读在它最终被处理到磁盘之前可能会变成一次8k的读,才被计数(和排队),因此只有一次I/O操作
F6 125965938 读扇区的次数
F7 23417570 读花费的时间(ms),这是所有读操作所花费的毫秒数
F8 65193045 成功完成写的请求次数
F9 97088410 写请求合并的次数
F10 5106211888 写请求的扇区数综合
F11 875230028 写请求花费的时间总和
F12 0 I/O的当前速度,只有这个域应该是0,如果这个值是0,同时write_complete read_complete io_processing一直不变可能就是I/O hang了
F13 41032543 输入/输出花费的时间(ms),花在I/O操作上的毫秒数,这个域会增长只要field 9不为0
F14 2964738044 输入/输出操作花费的加权毫秒数

/proc/dma

一个列表, 指出正在使用的\fIISA\fP DMA (直接内存访问)通道.

/proc/driver

  • …..

TODO

/proc/execdomains

TODO

/proc/fb

TODO

/proc/filesystems

以文本格式列出了被编译进内核的文件系统. 当没有给指明哪个文件系统的时候,就依靠该文件遍历不同的文件系统.

/proc/fs

  • ……
    TODO

/proc/hookers

TODO

/proc/hotfix_info

TODO

/proc/ide

TODO

/proc/interrupts

该文件以 ASCII 格式记录了(至少是在 i386 体系上的)每次 IRQ 的中断数目.

/proc/iomem

TODO

/proc/ioports

该文件列出了当前在用的已注册 I/O 端口范围.

/proc/ipmi

  • ……

TODO

/proc/irq

  • ……

TODO

/proc/kallsyms

TODO

/proc/kcore

该伪文件以 core 文件格式给出了系统的物理内存映象, 再 利用未卸载的内核 (/usr/src/linux/tools/zSystem), 我 们就可以用 GDB 查探当前内核的任意数据结构.

该文件的总长度是物理内存 (RAM) 的大小再加上 4KB.

/proc/keys

TODO

/proc/key-users

TODO

/proc/kmsg

可以用该文件取代系统调用 syslog(2) 来记录内核信息. 但是读该文件需要超级用户权限, 并且一次只能有一个进程可以读该文件, 因而如果一个使用了系统调用功能来记录内核信息的系统日志进程正在运行的话,别的进程就不能再去读该伪文件了.

该文件的内容可以用 dmesg(8) 来查看.

/proc/ksyms

该文件保存了内核输出的符号定义, 使用该文件动态地连接和捆绑可装载的模块.

/proc/kpagecount

TODO

/proc/kpageflags

TODO

/proc/loadavg

前三列是过去的 1, 5, 15 分钟的平均负载值, 与 uptime(1) 等命令的结果相同.
第四列是正在运行的进程数和总进程数
第五列是最近运行的进程pid

/proc/locks

这个文件显示当前文件锁.

/proc/malloc

只有在编译时定义了 CONFIGDEBUGMALLOC 才会有该文件.

/proc/mdstat

TODO

/proc/meminfo

free(1) 利用该文件来给出系统总的空闲内存和已用内存(包括物理内存和交换内存), 以及内核所使用的共享内存和缓冲区.

该文件与 free(1) \h'-1' 格式相同, 但是以字节为单位而不是 KB.

字段 释义
MemTotal 总内存
MemFree 空闲内存
MemAvailable
Buffers 给文件的缓冲大小
Cached 高速缓冲存储器使用的大小
SwapCached 被高速缓冲存储器用的交换空间大小
Active 活跃使用中的高速缓冲存储器页面文件的大小
Inactive 不经常使用中的高速缓冲存储器页面文件的大小
Activea
Inactivea
Activef
Inactivef
Unevictable
Mlocked
SwapTotal 交换空间总大小
SwapFree 空闲交换空间
Dirty 等待被写回到磁盘的大小
Writeback 正在被写回到磁盘的大小
AnonPages 未映射的页的大小
Mapped 设备和文件映射的大小
Shmem
Slab 内核数据结构缓存的大小,可减少申请和释放内存带来的消耗
SReclaimable 可回收slab的大小
SUnreclaim 不可回收的slab的大小
KernelStack
PageTables 管理内存分页的索引表的大小
NFS_Unstable 不稳定页表的大小
Bounce 退回
WritebackTmp
CommitLimit
Committed_AS
VmallocTotal 虚拟内存大小
VmallocUsed 已被使用的虚拟内存大小
VmallocChunk
Percpu
HardwareCorrupted
AnonHugePages
CmaTotal
CmaFree
HugePages_Total 大页面的分配
HugePages_Free
HugePages_Rsvd
HugePages_Surp
Hugepagesize
DirectMap4k
DirectMap2M
DirectMap1G

/proc/misc

TOOD

/proc/modules

列出了系统已载入的模块, 文本格式.

/proc/mounts

TODO

/proc/mtrr

TODO

/proc/net

该子目录包括多个 ASCII 格式的网络伪文件, 描述了网络层的部分情况. 可以用 cat 来察看这些文件, 但标准的 netstat(8) 命令组更清晰地给出了这些文件的信息.

/proc/net/arp

该文件以 ASCII 格式保存了内核 ARP 表, 用于地址解析, 包括静态和动态 arp 数据.

文件格式如下:

IP address       HW type     Flags       HW address
10.11.100.129    0x1         0x6         00:20:8A:00:0C:5A
10.11.100.5      0x1         0x2         00:C0:EA:00:00:4E
44.131.10.6      0x3         0x2         GW4PTS

其中 ‘IP address’ 是机器的 IPv4 地址; ‘HW type’ 是地址的硬件类型, 遵循 RFC 826;
flags 是 ARP 结构的内部标志, 在 /usr/include/linux/if_arp.h 中定义;
‘HW address’ 是该IP 地址的物理层映射(如果知道的话).

/proc/net/dev

该伪文件包含网络设备状态信息, 给出了发送和收到的包的数目, 错误和冲突的数目, 以及别的一些基本统计数据.
ifconfig(8) 利用了该文件来报告网络设备状态.

文件格式如下:

Inter-|   Receive                  |   Transmit
face |packets errs drop fifo frame|packets errs drop fifo colls carrier
lo:      0    0    0    0    0     2353    0    0    0     0    0
eth0: 644324    1    0    0    1   563770    0    0    0   581    0

/proc/net/dev_mcast

TODO

/proc/net/igmp

TODO

/proc/net/rarp

该文件具有和 arp 同样的格式, 包含当前的逆向地址映射数据.
rarp(8) 利用这些数据来作逆向地址查询服务. 只有将 RARP 配置进内核, 该文件才存在.

/proc/net/raw

该文件保存了 RAW 套接字表, 大部分信息除用于调试以外没有什么用.
`sl’ 指出了套接字的内核散列槽号;
‘local address’ 包括本地地址和协议号对;
“St” 是套接字的内部状态;
tx_queue 和 rx_queue 是内核存储器使用意义上的输入输出数据队列;
RAW 没有使用”tr”, “tm-> when” 和 “rexmits”;
uid 是套接字创建者的有效 uid.

/proc/net/snmp

该文件以 ASCII 格式保存了 IP, ICMP, TCP 以及 UDP 管理所需的数据信息, 基于 snmp 协议.

Tcp

字段 说明
ActiveOpens 主动连接tcp请求数
PssiveOpens 接收到的tcp请求数
AttemptFails tcp连接失败个数:主动连接失败收到syn包回包syn+ack给对方后,被对方reset收到的请求中,同时有syn+rst+flag
EstabRests
CurrEstab tcp当前建立的连接的个数
Insegs tcp接收的分片数
OutSegs tcp发送的分片数
RetranSegs 重传分片数
InErrs tcp入包错误(pkg/m,通常是校验错误)
OutRsts

Udp

字段 说明
InDatagrams udp收包量
NoPorts 未知端口接收数据包
InErrors 本机端口未监听之外的其他原因引起的udp入包无法送达:1.收包缓冲区满, 2.入包校验失败. 3. 其他
OutDatagrams udp发包量
RcvbufErrors 接收缓冲区溢出的包量
SndbufErrors 发送缓冲区溢出的包量

/proc/net/tcp

该文件保存了 TCP 套接字表, 大部分信息除用于调试以外没有什么用.
“sl” 指出了套接字的内核散列槽号;
“local address” 包括本地地址和端口号;
“remote address” 包括远地地址和端口号(如果有连接的话);
‘St’ 是套接字的内部状态;
‘tx_queue’ 和 ‘rx_queue’ 是内核存储器使用意义上的输入输出数据队列;
“tr”, “tm->when” 和 “rexmits” 保存了内核套接字声明的内部信息, 只用于调试;
uid是套接字创建者的有效 uid.

/proc/net/udp

该文件保存了 UDP 套接字表, 大部分信息除用于调试以外没有什么用.
“sl” 指出了套接字的内核散列槽号;
“local address”包括本地地址和端口号;
“remote address” 包括远地地址和端口号(如果有连接的话);
“St” 是套接字的内部状态;
“tx_queue” 和 “rx_queue” 是内核存储器使用意义上的输入输出数据队列;
UDP 没有使用 “tr”,”tm->when” 和 “rexmits”;
uid 是套接字创建者的有效 uid.

格式如下:

sl  local_address rem_address   st tx_queue rx_queue tr rexmits  tm->when uid
1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0

TODO

/proc/net/unix

列出了当前系统的UNIX域套接字以及它们的状态,
格式如下:

Num RefCount Protocol Flags    Type St Path
0: 00000002 00000000 00000000 0001 03
1: 00000001 00000000 00010000 0001 01 /dev/printer

Num 是内核散列槽号; RefCount 是用户套接字号; Protocol 当前总是 0; Flags 是内核标志, 指出了套接字的状态; Type 当前总是 1(在内核中尚未支持 unix 域数据报套接字); St 是套接字内部状态; Path 套接字绑捆的路径(如果有的话).

\fIdisk 0 0 0 0\fP 目前并没有实现这四个磁盘记录, 我甚至认为就不应该实现它,这是由于在别的机器上内核统计通常依赖转换率及每秒 I/O 数, 而这令每个驱动器只能有一个域.

\fIpage 5741 1808\fP 系统(从磁盘)交换进的页数和交换出去的页数.

\fIswap 1 0\fP 取入的交换页及被取出的交换页的页数.

\fIintr 1462898\fP 系统自启动以来所收到的中断数.

\fIctxt 115315\fP 系统所作的进程环境切换次数.

\fIbtime 769041601\fP 系统自 1970 年 1 月 1 号以来总的运行时间, 以秒为单位.

/proc/pagetypeinfo

TODO

/proc/partitions

TODO

/proc/pci

该文件列出了内核初始化时发现的所有 PCI 设备及其配置.

/proc/profile

TODO

/proc/sched_debug

TODO

/proc/schedstat

TODO

/proc/scsi

该目录包括 scsi 中间层伪文件及各种 SCSI 底层驱动器子目录,对系统中每个 SCSI host, 子目录中都存在一个文件与之对应, 展示了部分 SCSI IO 子系统的状态. 这些文件是 ASCII 格式 的, 可用cat阅读.

你也可以通过写其中某些文件来重新配置该子系统, 开关一些功能.

/proc/scsi/scsi

该文件列出了内核掌握的所有 SCSI 设备, 其内容就和系统启动时所看到的类似. 目前 scsi 只支持 \fIsingledevice\fP 命令, 该命令允许 root 添加一个热插 拔(hotplugged)设备到一个已知设备列表中.

echo 'scsi singledevice 1 0 5 0' > /proc/scsi/scsi 

该命令令 host scsi1 扫描 SCSI 通道 0, 看在 ID 5 LUN 0 是否存在设备, 如果在该地址 存在设备, 或者该地址无效, 则返回一个错误.

/proc/scsi/[drivername]

目前 \fIdrivername\fP 可包含: NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore 或者 wd7000. 这些目录展示那些至少注册了一个 SCSI HBA 的驱动. 而对每个已注册的 host, 每个目录中都包含一个文件与之对应, 而这些对应的 host 文件就以初始化时分配给 host 的数字来命名.

这些文件给出了驱动程序以及设备的配置, 统计数据等.

可以通过写这些文件实现不同的 host 上做不同的工作. 例如, root 可以用 \fIlatency\fP\fInolatency\fP 命令打 开或者关闭 eata_dma 驱动器上测量延时的代码, 也可以用 \fIlockup\fP\fIunlock\fP 命令 控制 scsi_debug 驱动器所模拟的总线锁操作.

/proc/self

当某进程访问 /proc 目录时, 该目录就指向 /proc 下以该进
程 pid 命名的目录.

/proc/slabinfo

TODO

/proc/softirqs

TODO

/proc/stat

内核及系统的统计数据.因架构而异

cpu  36364572 5995 38145981 1178390849 4661011 0 128118 0 0 0
cpu0 17334331 2770 18585681 591144054 1591039 0 92513 0 0 0
cpu1 19030240 3224 19560300 587246794 3069972 0 35605 0 0 0
intr 4662961467 68 10 0 0 839 0 3 0 0 0 0 34 15 0 0 0 0 0 0 0 0 0 0 0 0 45469652 1 14535056 291 0 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 7579351839
btime 1596255026
processes 99453314
procs_running 2
procs_blocked 0
softirq 2898201349 3 1403400386 90 44779554 45384695 0 161 472734207 0 931902253

说明

cpu行关系对应说明

cpu user nice system idle iowait irq softirq steal guest guest_nice

名字 说明
user 用户态cpu时间
nice 低优先级程序所占用的用户态cpu时间
system 系統态的cpu时间
idle cpu空闲的时间
iowait 等待io响应的时间
irq 处理硬中断的时间
softirq 处理软中断的时间
steal 其他系统所花的时间(虚拟环境中运行的其他操作系统)
guest 运行时间为客户操作系统下的虚拟cpu控制(访客)
guest_nice 低优先级程序所占用的用户态的cpu时间(访客)

其它说明

名字 说明
intr 系统中断的信息,第一个为自系统启动以来,发生的所有中断的次数;然后每个数值对应一个特定的中断自系统启动以来发生的次数
ctxt 自系统启动以来cpu发生的上下文交互次数
btime 开机时间(以utc时间开始计算,单位为秒)
processes 自系统启动以来所创建的任务的个数
proces_running 当前运行队列的任务数目
proces_blocked 当前被阻塞的任务数目
spftirq 软中断的情况

/proc/swaps

TODO

/proc/sys

该目录在 1.3.57 的内核里开始出现, 包含一些对应于内核变量的文件和子目录. 你可以读这些变量, 有的也可以通过 \fIproc\fP 修改, 或者用系统调用 sysctl (2) 修改.

/proc/sys/abi

TODO

/proc/sys/debug

TODO

/proc/sys/dev

TODO

/proc/sys/fs

TODO

  • binfmt_misc
  • dentry-state
  • dir-notify-enable
  • dquot-max
  • dquot-nr
  • epoll
  • file-max

    给出系统所容许的最大可打开文件数.

  • file-nr

    给出当前打开的文件数.

  • inode-max
  • inode-nr
  • inode-state
  • inotify
  • lease-break-time
  • leases-enable
  • mqueue
  • overflowgid
  • pipe-max-size
  • protected_hardlinks
  • protected_symlinks
  • suid_dumpable
  • super-max
  • super-nr

TODO

/proc/sys/kernel

该目录包括如下文件:

  • acct
  • cap_last_cap
  • cap-bount
  • core_pattern
  • core_uses_pid
  • ctrl-alt-del
  • dmesg_restrict
  • domainname
  • hostname
  • hotplug
  • htab-reclaim
  • kptr_restrict
  • l2cr
  • modprobe
  • modules_disabled
  • msgmax
  • msgmni
  • msgmnb
  • ostype
  • osrelease
  • overflowgid
  • overflowuid
  • panic
  • panic_on_oops
  • pid_max
  • powersave
  • printk
  • pty
    • max
    • nr
  • random
  • real-root-dev
  • reboot-cmd
  • rtsig-max
  • rtsig-nr
  • sched_rr_timeslice_ms
  • sem
  • sg-big-buff
  • shm_rmid_forced
  • shmall
  • shmmax
  • shmmni
  • sysrq
  • version
  • threads-max
  • zero-paged

/proc/sys/net

该目录包括如下文件:

  • core
    • somaxconn

/proc/sys/proc

TODO

/proc/sys/sunrpc

TODO

/proc/sys/vm

该目录包括如下文件:

  • drop_caches
  • legacy_va_layout
  • memory_failure_early_kill
  • memory_failure_recovery
  • oom_dump_tasks
  • oom_kill_allocating_task
  • overcommit_memory
  • overcommit_ratio
  • panic_on_oom
  • swappiness

/proc/sysrq-trigger

TODO

/proc/sysvipc

TODO

/proc/tty

  • …..

TODO

/proc/uptime

TODO

/proc/version

TODO

/proc/vmallocinfo

TODO

/proc/vmstat

TODO

/proc/zoneinfo

TODO


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 245292011@qq.com

文章标题:linux下/proc文件夹

字数:5.7k

本文作者:常丁方

发布时间:2020-09-10, 22:14:51

最后更新:2021-08-25, 18:31:45

原始链接:http://changdingfang.com/2020/09/10/notes/linux/linux-proc/
×

喜欢就点赞,疼爱就打赏

资源