目录
前言
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