Linux小工具(3)之/proc目录详细介绍(上)

目录

前言

一、平台说明

二、/proc目录概述

三、准备使用

(1)进程描述文件夹

(2)/proc目录下常见的文件夹


前言

Linux系统的使用有别于Windows系统,无论是系统信息还是应用软件信息都没有Windows下那么方便查看。因此,在这里陆续总结一些Linux下的小工具,以便自己能够在Linux下进行高效的使用和开发。

文档借鉴了以下文章:Linux /proc目录详解 


一、平台说明

本人使用的的linux开发环境:

vmWAre 14下安装的Ubuntu 16.04.2

(本来是想使用Fedora,但是xilinx开发工具Petalinux的安装环境要求使用Ubuntu 16.04.2)


二、/proc目录概述

Linux系统上的/proc目录是一种文件系统,即proc文件系统。

proc文件系统与其他常见的文件系统不同的是,proc是一种伪文件系统(即虚拟文件系统,这个概念可下去再深入理解),存储

的是当前内核运行状态的一系列特殊文件。用户可以通过这些文件,查看有关系统硬件信息和内核当前运行进程的信息,甚至可

以通过更改其中某些文件来改变内核的运行状态。这些在实际的项目开发中都非常有用。它有如下特点:

(1)proc文件系统是一种内核和内核模块向进程发送消息的机制,因此成为/proc。

用户通过/proc伪文件系统,可以和内核内部数据结构进行交互,获取有关进程的消息,也可以在运行中(on the fly)

改变设置(通过改变内核参数)。

(2)与其他文件系统不同,/proc存在内存之中,而不是在硬盘上。通过查看/proc/mounts(和mount命令效果相同),可以查看到当前系统上已经挂载了哪些文件系统,其中有一项:

yehaiyang@ubuntu:/proc$ cat /proc/mounts 
sysfs /sys sysfs rw,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
udev /dev devtmpfs rw,nosuid,relatime,size=1250996k,nr_inodes=312749,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
tmpfs /run tmpfs rw,nosuid,noexec,relatime,size=254472k,mode=755 0 0
/dev/sda1 / ext4 rw,relatime,errors=remount-ro,data=ordered 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
tmpfs /run/lock tmpfs rw,nosuid,nodev,noexec,relatime,size=5120k 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,mode=755 0 0
cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd 0 0
pstore /sys/fs/pstore pstore rw,nosuid,nodev,noexec,relatime 0 0
cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0
cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=31,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=14053 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
mqueue /dev/mqueue mqueue rw,relatime 0 0
hugetlbfs /dev/hugepages hugetlbfs rw,relatime 0 0
fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0
vmware-vmblock /run/vmblock-fuse fuse.vmware-vmblock rw,relatime,user_id=0,group_id=0,default_permissions,allow_other 0 0
tmpfs /run/user/1000 tmpfs rw,nosuid,nodev,relatime,size=254472k,mode=700,uid=1000,gid=1000 0 0
gvfsd-fuse /run/user/1000/gvfs fuse.gvfsd-fuse rw,nosuid,nodev,relatime,user_id=1000,group_id=1000 0 0

格式解释:

# <file system> <mount point>   <type>  <options>                       <dump>  <pass>
proc            /proc           proc    rw,nosuid,nodev,noexec,relatime  0       0

前三行依次是:文件系统、挂载点、文件类型。

(3)/proc由内核控制,没有承载/proc的设备。因为/proc主要存放由内核控制的状态信息,所以大部分这些消息的逻辑位置位于内核控制的内存。对/proc进行一次ls -l命令,可以看到大部分文件都是0字节,但是又可以通过cat来查看这些文件的内容。

yehaiyang@ubuntu:/proc$ ls -l
total 0
...
...
-r--r--r--  1 root             root                           0 Dec  3 09:50 timer_list
-rw-r--r--  1 root             root                           0 Dec  3 09:50 timer_stats
dr-xr-xr-x  4 root             root                           0 Dec  3 09:50 tty
-r--r--r--  1 root             root                           0 Dec  3 09:50 uptime
-r--r--r--  1 root             root                           0 Dec  3 09:50 version
-r--r--r--  1 root             root                           0 Dec  3 09:50 version_signature
-r--------  1 root             root                           0 Dec  3 09:50 vmallocinfo
-r--r--r--  1 root             root                           0 Dec  3 09:50 vmstat
-r--r--r--  1 root             root                           0 Dec  3 09:50 zoneinfo

yehaiyang@ubuntu:/proc$ cat version
Linux version 4.8.0-36-generic (buildd@lgw01-18) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #36~16.04.1-Ubuntu SMP Sun Feb 5 09:39:57 UTC 2017

这是因为:/proc文件系统和其他常规的文件系统一样,把自己注册在虚拟文件系统层(VFS),只有当VFS调用它,,请求文件、,目录的inode的时候,/proc文件系统才会根据内核中的信息建立相应的文件和目录。


三、准备使用

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

下面我们分别介绍个文件的作用:首先运行一个while(1)死循环的进程,进程号为11340;

root@ubuntu:/home/yehaiyang/Desktop/hello# ./while &
[1] 11340

查看/proc,可以看到11340的进程文件夹

root@ubuntu:/proc# ls
1      104    10909  114   127   1923  2098  219   225   233   24    2490  258  271  2918  3438  41   7     97         diskstats    kmsg          partitions     tty
10     1040   11     1147  13    1925  21    2192  2259  2336  240   25    259  272  2981  35    413  8     972        dma          kpagecgroup   sched_debug    uptime
100    1042   110    115   14    2     2109  2194  226   2338  241   250   26   273  3     3560  417  9     977        driver       kpagecount    schedstat      version
101    10429  111    116   1486  20    2110  2198  227   234   242   2507  260  274  30    357   42   91    98         execdomains  kpageflags    scsi           version_signature
1014   105    1118   1169  149   2005  2114  2199  228   2346  2421  251   261  275  3003  359   43   93    99         fb           loadavg       self           vmallocinfo
102    10513  112    117   15    2011  2123  22    229   235   243   252   262  276  3010  36    438  94    acpi       filesystems  locks         slabinfo       vmstat
10231  10521  11232  118   150   2023  2125  220   230   2359  244   253   263  277  31    360   44   941   asound     fs           mdstat        softirqs       zoneinfo
1027   10557  11262  1180  1567  2049  2132  2202  2307  236   245   254   264  278  313   3636  45   947   buddyinfo  interrupts   meminfo       stat
1029   106    1127   119   1574  2051  2150  2205  2308  2364  2453  2547  265  279  314   3659  46   95    bus        iomem        misc          swaps
103    107    11272  1199  1597  2057  2152  2207  231   2368  246   255   266  28   32    37    5    9581  cgroups    ioports      modules       sys
1033   10702  11273  12    16    2061  2159  2209  2314  237   2463  2558  267  280  33    38    50   96    cmdline    irq          mounts        sysrq-trigger
10337  10717  11300  120   18    2079  2167  223   2317  2377  247   256   268  281  331   389   51   9608  consoles   kallsyms     mpt           sysvipc
10377  108    11305  121   19    2084  218   2238  232   238   248   2565  269  282  334   39    52   962   cpuinfo    kcore        mtrr          thread-self
1038   10813  11340  122   1917  2092  2185  224   2321  2389  2487  257   27   283  336   391   576  964   crypto     keys         net           timer_list
1039   109    11341  1252  1918  2094  2188  2240  2322  239   249   2572  270  284  34    40    604  969   devices    key-users    pagetypeinfo  timer_stats

(1)进程描述文件夹

/proc/N中存储的是系统当前正在运行的进程的相关信息,其中有些文件是每个进程都会具有的,下面对这些常见文件做出说明。

root@ubuntu:/# ll /proc/11340/
total 0
dr-xr-xr-x   9 root root 0 Dec 15 11:18 ./
dr-xr-xr-x 286 root root 0 Dec 14 19:51 ../
dr-xr-xr-x   2 root root 0 Dec 15 11:19 attr/
-rw-r--r--   1 root root 0 Dec 15 11:19 autogroup
-r--------   1 root root 0 Dec 15 11:19 auxv
-r--r--r--   1 root root 0 Dec 15 11:19 cgroup
--w-------   1 root root 0 Dec 15 11:19 clear_refs
-r--r--r--   1 root root 0 Dec 15 11:19 cmdline
-rw-r--r--   1 root root 0 Dec 15 11:19 comm
-rw-r--r--   1 root root 0 Dec 15 11:19 coredump_filter
-r--r--r--   1 root root 0 Dec 15 11:19 cpuset
lrwxrwxrwx   1 root root 0 Dec 15 11:19 cwd -> /home/yehaiyang/Desktop/hello/
-r--------   1 root root 0 Dec 15 11:19 environ
lrwxrwxrwx   1 root root 0 Dec 15 11:19 exe -> /home/yehaiyang/Desktop/hello/while*
dr-x------   2 root root 0 Dec 15 11:19 fd/
dr-x------   2 root root 0 Dec 15 11:19 fdinfo/
-rw-r--r--   1 root root 0 Dec 15 11:19 gid_map
-r--------   1 root root 0 Dec 15 11:19 io
-r--r--r--   1 root root 0 Dec 15 11:19 limits
-rw-r--r--   1 root root 0 Dec 15 11:19 loginuid
dr-x------   2 root root 0 Dec 15 11:19 map_files/
-r--r--r--   1 root root 0 Dec 15 11:19 maps
-rw-------   1 root root 0 Dec 15 11:19 mem
-r--r--r--   1 root root 0 Dec 15 11:19 mountinfo
-r--r--r--   1 root root 0 Dec 15 11:19 mounts
-r--------   1 root root 0 Dec 15 11:19 mountstats
dr-xr-xr-x   5 root root 0 Dec 15 11:19 net/
dr-x--x--x   2 root root 0 Dec 15 11:19 ns/
-r--r--r--   1 root root 0 Dec 15 11:19 numa_maps
-rw-r--r--   1 root root 0 Dec 15 11:19 oom_adj
-r--r--r--   1 root root 0 Dec 15 11:19 oom_score
-rw-r--r--   1 root root 0 Dec 15 11:19 oom_score_adj
-r--------   1 root root 0 Dec 15 11:19 pagemap
-r--------   1 root root 0 Dec 15 11:19 personality
-rw-r--r--   1 root root 0 Dec 15 11:19 projid_map
lrwxrwxrwx   1 root root 0 Dec 15 11:19 root -> //
-rw-r--r--   1 root root 0 Dec 15 11:19 sched
-r--r--r--   1 root root 0 Dec 15 11:19 schedstat
-r--r--r--   1 root root 0 Dec 15 11:19 sessionid
-rw-r--r--   1 root root 0 Dec 15 11:19 setgroups
-r--r--r--   1 root root 0 Dec 15 11:19 smaps
-r--------   1 root root 0 Dec 15 11:19 stack
-r--r--r--   1 root root 0 Dec 15 11:19 stat
-r--r--r--   1 root root 0 Dec 15 11:19 statm
-r--r--r--   1 root root 0 Dec 15 11:19 status
-r--------   1 root root 0 Dec 15 11:19 syscall
dr-xr-xr-x   3 root root 0 Dec 15 11:19 task/
-r--r--r--   1 root root 0 Dec 15 11:19 timers
-rw-rw-rw-   1 root root 0 Dec 15 11:19 timerslack_ns
-rw-r--r--   1 root root 0 Dec 15 11:19 uid_map
-r--r--r--   1 root root 0 Dec 15 11:19 wchan

(1.1)cmdline

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

root@ubuntu:/proc/11340# more cmdline 
./while

(1.2)cwd 

表示:指向当前进程运行目录的一个符号链接,表示当前进程在哪个目录下运行;

cwd -> /home/yehaiyang/Desktop/hello/

(1.3)exe 

表示:指向启动当前进程的可执行文件(完整路径)的符号链接;直接执行:./exe,相当于启动当前进程的一个拷贝;

exe -> /home/yehaiyang/Desktop/hello/while*

(1.4)environ (这个很重要)

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

root@ubuntu:/proc/11340# more environ 
XDG_VTNR=75ULES=gail:atk-bridge:unity-gtk-moduleg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01
;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=0
1;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;3
5:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;
35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;
35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*
.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.
spx=00;36:*.xspf=00;36:yring/ssh/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/gameslloHASE=1=_DATA_DIRS=/usr/share/ubuntu:/usr/share/gnome:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop0op

(1.5)fd (一般用不上)

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

root@ubuntu:/proc/11340/fd# ll
total 0
dr-x------ 2 root root  0 Dec 15 11:19 ./
dr-xr-xr-x 9 root root  0 Dec 15 11:18 ../
lrwx------ 1 root root 64 Dec 15 11:34 0 -> /dev/pts/1
lrwx------ 1 root root 64 Dec 15 11:34 1 -> /dev/pts/1
lrwx------ 1 root root 64 Dec 15 11:31 2 -> /dev/pts/1

(1.6)limits (一般用不上)

表示:当前进程所使用的每一个受限资源的软限制、硬限制和管理单元;此文件仅可由实际启动当前进程的UID用户读取;(2.6.24以后的内核版本支持此功能);

root@ubuntu:/proc/11340# cat limits 
Limit                     Soft Limit           Hard Limit           Units     
Max cpu time              unlimited            unlimited            seconds   
Max file size             unlimited            unlimited            bytes     
Max data size             unlimited            unlimited            bytes     
Max stack size            8388608              unlimited            bytes     
Max core file size        0                    unlimited            bytes     
Max resident set          unlimited            unlimited            bytes     
Max processes             9773                 9773                 processes 
Max open files            1024                 1048576              files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       9773                 9773                 signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us  

(1.7)maps (这个也有用)

表示:当前进程关联到的每个可执行文件和库文件在内存中的映射区域及其访问权限所组成的列表;

root@ubuntu:/proc/11340# more maps
00400000-00401000 r-xp 00000000 08:01 6852795                            /home/yehaiyang/Desktop/hello/while
00600000-00601000 r--p 00000000 08:01 6852795                            /home/yehaiyang/Desktop/hello/while
00601000-00602000 rw-p 00001000 08:01 6852795                            /home/yehaiyang/Desktop/hello/while
7f8225a9b000-7f8225c5b000 r-xp 00000000 08:01 5242963                    /lib/x86_64-linux-gnu/libc-2.23.so
7f8225c5b000-7f8225e5b000 ---p 001c0000 08:01 5242963                    /lib/x86_64-linux-gnu/libc-2.23.so
7f8225e5b000-7f8225e5f000 r--p 001c0000 08:01 5242963                    /lib/x86_64-linux-gnu/libc-2.23.so
7f8225e5f000-7f8225e61000 rw-p 001c4000 08:01 5242963                    /lib/x86_64-linux-gnu/libc-2.23.so
7f8225e61000-7f8225e65000 rw-p 00000000 00:00 0 
7f8225e65000-7f8225e8b000 r-xp 00000000 08:01 5242897                    /lib/x86_64-linux-gnu/ld-2.23.so
7f822606d000-7f8226070000 rw-p 00000000 00:00 0 
7f822608a000-7f822608b000 r--p 00025000 08:01 5242897                    /lib/x86_64-linux-gnu/ld-2.23.so
7f822608b000-7f822608c000 rw-p 00026000 08:01 5242897                    /lib/x86_64-linux-gnu/ld-2.23.so
7f822608c000-7f822608d000 rw-p 00000000 00:00 0 
7ffd66c02000-7ffd66c23000 rw-p 00000000 00:00 0                          [stack]
7ffd66d6c000-7ffd66d6e000 r--p 00000000 00:00 0                          [vvar]
7ffd66d6e000-7ffd66d70000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]

(1.8)mem (有用)

表示:当前进程所占用的内存空间,由open、read和lseek等系统调用使用,不能被用户读取;

(1.9)root (很有用)

 表示:指向当前进程运行根目录的符号链接,默认根目录是:/;

注意:在Unix和Linux系统上,通常采用chroot命令使每个进程运行于独立的根目录;

root -> //

(1.10)stat (一般不用)

表示:当前进程的状态信息,包含一系统格式化后的数据列,可读性差,通常由ps命令使用;

root@ubuntu:/proc/11340# more stat
11340 (while) R 11273 11340 3010 34817 19440 4194304 89 0 0 0 1472515 12 0 0 20 0 1 0 774859 4321280 158 18446744073709551615 4194304 4195980 140726327445264 140726327445040 4195546 
0 0 0 0 0 0 0 17 3 0 0 0 0 0 6295056 6295600 9744384 140726327452376 140726327452384 140726327452384 140726327455728 0

(1.11)statm (一般不用)

表示:当前进程占用内存的状态信息,通常以“页面”(page)表示;

root@ubuntu:/proc/11340# more statm
1055 158 141 1 0 46 0

(1.12)status 

表示:与stat所提供信息类似,但可读性较好,如下所示,每行表示一个属性信息;其详细介绍请参见 proc的man手册页;

root@ubuntu:/proc/11340# more status 
Name:	while
Umask:	0022
State:	R (running)
Tgid:	11340
Ngid:	0
Pid:	11340
PPid:	11273
TracerPid:	0
Uid:	0	0	0	0
Gid:	0	0	0	0
FDSize:	256
Groups:	0 
NStgid:	11340
NSpid:	11340
NSpgid:	11340
NSsid:	3010
VmPeak:	    4324 kB
VmSize:	    4220 kB
VmLck:	       0 kB
VmPin:	       0 kB
VmHWM:	     632 kB
VmRSS:	     632 kB
RssAnon:	      68 kB
RssFile:	     564 kB
RssShmem:	       0 kB
VmData:	      48 kB
VmStk:	     136 kB
VmExe:	       4 kB
VmLib:	    1952 kB
VmPTE:	      28 kB
VmPMD:	      12 kB
VmSwap:	       0 kB
HugetlbPages:	       0 kB
Threads:	1
SigQ:	0/9773
SigPnd:	0000000000000000
ShdPnd:	0000000000000000
SigBlk:	0000000000000000
SigIgn:	0000000000000000
SigCgt:	0000000000000000
CapInh:	0000000000000000
CapPrm:	0000003fffffffff
CapEff:	0000003fffffffff
CapBnd:	0000003fffffffff
CapAmb:	0000000000000000
Seccomp:	0
Cpus_allowed:	ffffffff,ffffffff,ffffffff,ffffffff
Cpus_allowed_list:	0-127
Mems_allowed:	00000000,00000001
Mems_allowed_list:	0
voluntary_ctxt_switches:	0
nonvoluntary_ctxt_switches:	5054

(1.13)task (很有用)

表示:目录文件,包含由当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中,这类似于其内容类似于每个进程目录中的内容;(内核2.6版本以后支持此功能)


(2)/proc目录下常见的文件夹

(2.1)/proc/acpi(有用)

表示:ACPI(高级配置和电源接口)支持操作系统设置和控制各个硬件部件。 ACPI 可以取代 PnP 和 APM。 它提供有关电池、AC 适配器、温度、风扇和系统事件(例如 “合上机盖” 或 “电池电量低”)的信息。

详细介绍间博客:ACPI详细介绍

(2.2)/proc/asound

表示:关于系统音频相关的文件。

详细介绍见博客:/proc/asound详细介绍

(2.3)/proc/bus

表示:系统总线(Bus)信息,例如pci/usb等。详细介绍需要查看/proc的man手册。

(2.4)/proc/driver(有用)

表示:此目录包含内核使用的特定驱动程序的信息。此处的常见文件是rtc为系统的实时时钟(RTC)提供驱动程序输出,该系统可在系统关闭时保持时间。示例输出/proc/driver/rtc如下所示:

具体说明:E.3.4. /PROC/DRIVER/

root@ubuntu:/proc/driver# ls
rtc
root@ubuntu:/proc/driver# more rtc 
rtc_time	: 06:42:04
rtc_date	: 2018-12-17
alrm_time	: 00:00:00
alrm_date	: 2018-12-15
alarm_IRQ	: no
alrm_pending	: no
update IRQ enabled	: no
periodic IRQ enabled	: no
periodic IRQ frequency	: 1024
max user IRQ frequency	: 64
24hr		: yes
periodic_IRQ	: no
update_IRQ	: no
HPET_emulated	: yes
BCD		: yes
DST_enable	: no
periodic_freq	: 1024
batt_status	: okay

(2.5)/proc/fs(暂时无用)

表示:此目录显示导出的文件系统。如果运行NFS服务器,则键入将cat /proc/fs/nfsd/exports显示正在共享的文件系统以及为这些文件系统授予的权限。如下:

具体说明:E.3.5. /PROC/FS

root@ubuntu:/proc/fs# ls
ext4  jbd2  jfs  nfsd  xfs

(2.6)/proc/irq(有用)

表示:目录下面会为每个注册的irq创建一个以irq编号为名字的子目录,允许每个IRQ的单独配置,用于将IRQ设置为CPU亲和性,这允许系统将特定IRQ连接到仅一个CPU, 或者排除CPU处理任何IRQ。

default_smp_affinity文件是一个位掩码,它包含IRQ目录中smp_affinity文件的默认值。

root@ubuntu:/proc/irq# ls
0  10  12  14  16  18  2   25  27  29  30  32  34  36  38  4   41  43  45  47  49  50  52  54  56  58  6   61  63  8  default_smp_affinity
1  11  13  15  17  19  24  26  28  3   31  33  35  37  39  40  42  44  46  48  5   51  53  55  57  59  60  62  7   9

详细参看博客:/proc/irq和/proc/interrupts详解

红帽官网学习:E.3.6. /PROC/IRQ/

红帽官网学习:4.3. 中断和 IRQ 调节

(2.7)/proc/mpt(暂时不管)

(2.8)/proc/scsi

表示:目录中存储的是当前系统上所有SCSI设备的相关信息。其中,最主要的文件是/proc/scsi/scsi,它包含每个已识别的SCSI设备的列表,从此列表中,可以获得设备类型,型号名称,供应商,SCSI通道和ID数据。

root@ubuntu:/proc# cd scsi
root@ubuntu:/proc/scsi# ls
device_info  mptspi  scsi  sg  usb-storage

root@ubuntu:/proc/scsi# more scsi 
Attached devices:
Host: scsi2 Channel: 00 Id: 00 Lun: 00
  Vendor: VMware,  Model: VMware Virtual S Rev: 1.0 
  Type:   Direct-Access                    ANSI  SCSI revision: 02
Host: scsi4 Channel: 00 Id: 00 Lun: 00
  Vendor: NECVMWar Model: VMware SATA CD01 Rev: 1.00
  Type:   CD-ROM                           ANSI  SCSI revision: 05
Host: scsi33 Channel: 00 Id: 00 Lun: 00
  Vendor: Mass     Model: Storage Device   Rev:     
  Type:   Direct-Access                    ANSI  SCSI revision: 00

详细说明:

红帽官网学习:E.3.8. /PROC/SCSI/

(2.9)/proc/sys(非常重要)

表示:/ proc / sys /目录与与/proc下其它文件的“只读”属性不同的是,它不仅提供有关系统的信息,还允许管理员可对/proc/sys子目录中的许多文件内容进行修改,以更改内核的运行特性。事先可以使用“ls -l”命令查看某文件是否“可写入”。写入操作通常使用类似于“echo  DATA > /path/to/your/filename”的格式进行。

需要注意的是,即使文件可写,其一般也不可以使用编辑器进行编辑。

root@ubuntu:/proc/sys# ls
abi  debug  dev  fs  kernel  net  vm

(2.10)/proc/sysvipc(重要)

表示:该目录包含有关System V IPC资源的信息。 此目录中的文件与消息(msg),信号量(sem)和共享内存(shm)的System V IPC调用相关。

root@ubuntu:/proc/sysvipc# ls
msg  sem  shm

详见博客:进程间通信(IPC)——信号量、共享内存、消息队列

(2.11)/proc/tty

表示:此目录包含有关系统上可用和当前使用的tty设备的信息。 最初称为电传打字设备,任何基于字符的数据终端都称为tty设备。其中,drivers列出当前使用的tty设备,/proc/tty/driver/serial文件列出了每个串行tty行的使用情况统计信息和状态。

为了将tty设备用作网络设备,Linux内核在设备上强制执行线路规则。 这允许驱动程序将特定类型的头部放置在通过设备传输的每个数据块上,使得连接的远程端可能只是数据块流中的一个数据块。 SLIP和PPP是常见的线路规则,每个规则通常用于通过串行链路将系统连接到另一个系统。
已注册的行规则存储在ldiscs文件中,更多详细信息可在/proc/ttyldisc目录中找到。

root@ubuntu:/proc/tty# more drivers
/dev/tty             /dev/tty        5       0 system:/dev/tty
/dev/console         /dev/console    5       1 system:console
/dev/ptmx            /dev/ptmx       5       2 system
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
ttyprintk            /dev/ttyprintk   5       3 console
max310x              /dev/ttyMAX   204 209-224 serial
serial               /dev/ttyS       4 64-111 serial
pty_slave            /dev/pts      136 0-1048575 pty:slave
pty_master           /dev/ptm      128 0-1048575 pty:master
unknown              /dev/tty        4 1-63 console

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值