Linux小工具(3)之/proc目录详细介绍(上)
目錄
前言
一、平臺(tái)說明
二、/proc目錄概述
三、準(zhǔn)備使用
(1)進(jìn)程描述文件夾
(2)/proc目錄下常見的文件夾
前言
Linux系統(tǒng)的使用有別于Windows系統(tǒng),無論是系統(tǒng)信息還是應(yīng)用軟件信息都沒有Windows下那么方便查看。因此,在這里陸續(xù)總結(jié)一些Linux下的小工具,以便自己能夠在Linux下進(jìn)行高效的使用和開發(fā)。
文檔借鑒了以下文章:Linux /proc目錄詳解?
一、平臺(tái)說明
本人使用的的linux開發(fā)環(huán)境:
vmWAre 14下安裝的Ubuntu 16.04.2
(本來是想使用Fedora,但是xilinx開發(fā)工具Petalinux的安裝環(huán)境要求使用Ubuntu 16.04.2)
二、/proc目錄概述
Linux系統(tǒng)上的/proc目錄是一種文件系統(tǒng),即proc文件系統(tǒng)。
proc文件系統(tǒng)與其他常見的文件系統(tǒng)不同的是,proc是一種偽文件系統(tǒng)(即虛擬文件系統(tǒng),這個(gè)概念可下去再深入理解),存儲(chǔ)
的是當(dāng)前內(nèi)核運(yùn)行狀態(tài)的一系列特殊文件。用戶可以通過這些文件,查看有關(guān)系統(tǒng)硬件信息和內(nèi)核當(dāng)前運(yùn)行進(jìn)程的信息,甚至可
以通過更改其中某些文件來改變內(nèi)核的運(yùn)行狀態(tài)。這些在實(shí)際的項(xiàng)目開發(fā)中都非常有用。它有如下特點(diǎn):
(1)proc文件系統(tǒng)是一種內(nèi)核和內(nèi)核模塊向進(jìn)程發(fā)送消息的機(jī)制,因此成為/proc。
用戶通過/proc偽文件系統(tǒng),可以和內(nèi)核內(nèi)部數(shù)據(jù)結(jié)構(gòu)進(jìn)行交互,獲取有關(guān)進(jìn)程的消息,也可以在運(yùn)行中(on the fly)
改變?cè)O(shè)置(通過改變內(nèi)核參數(shù))。
(2)與其他文件系統(tǒng)不同,/proc存在內(nèi)存之中,而不是在硬盤上。通過查看/proc/mounts(和mount命令效果相同),可以查看到當(dāng)前系統(tǒng)上已經(jīng)掛載了哪些文件系統(tǒng),其中有一項(xiàng):
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前三行依次是:文件系統(tǒng)、掛載點(diǎn)、文件類型。
(3)/proc由內(nèi)核控制,沒有承載/proc的設(shè)備。因?yàn)?proc主要存放由內(nèi)核控制的狀態(tài)信息,所以大部分這些消息的邏輯位置位于內(nèi)核控制的內(nèi)存。對(duì)/proc進(jìn)行一次ls -l命令,可以看到大部分文件都是0字節(jié),但是又可以通過cat來查看這些文件的內(nèi)容。
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 zoneinfoyehaiyang@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這是因?yàn)?/span>:/proc文件系統(tǒng)和其他常規(guī)的文件系統(tǒng)一樣,把自己注冊(cè)在虛擬文件系統(tǒng)層(VFS),只有當(dāng)VFS調(diào)用它,,請(qǐng)求文件、,目錄的inode的時(shí)候,/proc文件系統(tǒng)才會(huì)根據(jù)內(nèi)核中的信息建立相應(yīng)的文件和目錄。
三、準(zhǔn)備使用
為了查看及使用上的方便,/proc目錄下的文件通常會(huì)按照相關(guān)性進(jìn)行分類存儲(chǔ)于不同的目錄甚至子目錄中,如/proc/scsi目錄中存儲(chǔ)的就是當(dāng)前系統(tǒng)上所有SCSI設(shè)備的相關(guān)信息,/proc/N中存儲(chǔ)的則是系統(tǒng)當(dāng)前正在運(yùn)行的進(jìn)程的相關(guān)信息,其中N為正在運(yùn)行的進(jìn)程(可以想象得到,在某進(jìn)程結(jié)束后其相關(guān)目錄則會(huì)消失)。
下面我們分別介紹個(gè)文件的作用:首先運(yùn)行一個(gè)while(1)死循環(huán)的進(jìn)程,進(jìn)程號(hào)為11340;
root@ubuntu:/home/yehaiyang/Desktop/hello# ./while & [1] 11340查看/proc,可以看到11340的進(jìn)程文件夾
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)進(jìn)程描述文件夾
/proc/N中存儲(chǔ)的是系統(tǒng)當(dāng)前正在運(yùn)行的進(jìn)程的相關(guān)信息,其中有些文件是每個(gè)進(jìn)程都會(huì)具有的,下面對(duì)這些常見文件做出說明。
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
表示: 啟動(dòng)當(dāng)前進(jìn)程的完整命令,但僵尸進(jìn)程目錄中的此文件不包含任何信息;
root@ubuntu:/proc/11340# more cmdline ./while(1.2)cwd?
表示:指向當(dāng)前進(jìn)程運(yùn)行目錄的一個(gè)符號(hào)鏈接,表示當(dāng)前進(jìn)程在哪個(gè)目錄下運(yùn)行;
cwd -> /home/yehaiyang/Desktop/hello/(1.3)exe?
表示:指向啟動(dòng)當(dāng)前進(jìn)程的可執(zhí)行文件(完整路徑)的符號(hào)鏈接;直接執(zhí)行:./exe,相當(dāng)于啟動(dòng)當(dāng)前進(jìn)程的一個(gè)拷貝;
exe -> /home/yehaiyang/Desktop/hello/while*(1.4)environ (這個(gè)很重要)
當(dāng)前進(jìn)程的環(huán)境變量列表,彼此間用空字符(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 (一般用不上)
表示:這是個(gè)目錄,包含當(dāng)前進(jìn)程打開的每一個(gè)文件的文件描述符(file descriptor),這些文件描述符是指向?qū)嶋H文件的一個(gè)符號(hào)鏈接;
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 (一般用不上)
表示:當(dāng)前進(jìn)程所使用的每一個(gè)受限資源的軟限制、硬限制和管理單元;此文件僅可由實(shí)際啟動(dòng)當(dāng)前進(jìn)程的UID用戶讀取;(2.6.24以后的內(nèi)核版本支持此功能);
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 (這個(gè)也有用)
表示:當(dāng)前進(jìn)程關(guān)聯(lián)到的每個(gè)可執(zhí)行文件和庫文件在內(nèi)存中的映射區(qū)域及其訪問權(quán)限所組成的列表;
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 (有用)
表示:當(dāng)前進(jìn)程所占用的內(nèi)存空間,由open、read和lseek等系統(tǒng)調(diào)用使用,不能被用戶讀取;
(1.9)root (很有用)
?表示:指向當(dāng)前進(jìn)程運(yùn)行根目錄的符號(hào)鏈接,默認(rèn)根目錄是:/;
注意:在Unix和Linux系統(tǒng)上,通常采用chroot命令使每個(gè)進(jìn)程運(yùn)行于獨(dú)立的根目錄;
root -> //(1.10)stat (一般不用)
表示:當(dāng)前進(jìn)程的狀態(tài)信息,包含一系統(tǒng)格式化后的數(shù)據(jù)列,可讀性差,通常由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 (一般不用)
表示:當(dāng)前進(jìn)程占用內(nèi)存的狀態(tài)信息,通常以“頁面”(page)表示;
root@ubuntu:/proc/11340# more statm 1055 158 141 1 0 46 0(1.12)status?
表示:與stat所提供信息類似,但可讀性較好,如下所示,每行表示一個(gè)屬性信息;其詳細(xì)介紹請(qǐng)參見 proc的man手冊(cè)頁;
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 (很有用)
表示:目錄文件,包含由當(dāng)前進(jìn)程所運(yùn)行的每一個(gè)線程的相關(guān)信息,每個(gè)線程的相關(guān)信息文件均保存在一個(gè)由線程號(hào)(tid)命名的目錄中,這類似于其內(nèi)容類似于每個(gè)進(jìn)程目錄中的內(nèi)容;(內(nèi)核2.6版本以后支持此功能)
(2)/proc目錄下常見的文件夾
(2.1)/proc/acpi(有用)
表示:ACPI(高級(jí)配置和電源接口)支持操作系統(tǒng)設(shè)置和控制各個(gè)硬件部件。 ACPI 可以取代 PnP 和 APM。 它提供有關(guān)電池、AC 適配器、溫度、風(fēng)扇和系統(tǒng)事件(例如 “合上機(jī)蓋” 或 “電池電量低”)的信息。
詳細(xì)介紹間博客:ACPI詳細(xì)介紹
(2.2)/proc/asound
表示:關(guān)于系統(tǒng)音頻相關(guān)的文件。
詳細(xì)介紹見博客:/proc/asound詳細(xì)介紹
(2.3)/proc/bus
表示:系統(tǒng)總線(Bus)信息,例如pci/usb等。詳細(xì)介紹需要查看/proc的man手冊(cè)。
(2.4)/proc/driver(有用)
表示:此目錄包含內(nèi)核使用的特定驅(qū)動(dòng)程序的信息。此處的常見文件是rtc為系統(tǒng)的實(shí)時(shí)時(shí)鐘(RTC)提供驅(qū)動(dòng)程序輸出,該系統(tǒng)可在系統(tǒng)關(guān)閉時(shí)保持時(shí)間。示例輸出/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(暫時(shí)無用)
表示:此目錄顯示導(dǎo)出的文件系統(tǒng)。如果運(yùn)行NFS服務(wù)器,則鍵入將cat /proc/fs/nfsd/exports顯示正在共享的文件系統(tǒng)以及為這些文件系統(tǒng)授予的權(quán)限。如下:
具體說明:E.3.5. /PROC/FS
root@ubuntu:/proc/fs# ls ext4 jbd2 jfs nfsd xfs(2.6)/proc/irq(有用)
表示:目錄下面會(huì)為每個(gè)注冊(cè)的irq創(chuàng)建一個(gè)以irq編號(hào)為名字的子目錄,允許每個(gè)IRQ的單獨(dú)配置,用于將IRQ設(shè)置為CPU親和性,這允許系統(tǒng)將特定IRQ連接到僅一個(gè)CPU,?或者排除CPU處理任何IRQ。
default_smp_affinity文件是一個(gè)位掩碼,它包含IRQ目錄中smp_affinity文件的默認(rèn)值。
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詳細(xì)參看博客:/proc/irq和/proc/interrupts詳解
紅帽官網(wǎng)學(xué)習(xí):E.3.6. /PROC/IRQ/
紅帽官網(wǎng)學(xué)習(xí):4.3. 中斷和 IRQ 調(diào)節(jié)
(2.7)/proc/mpt(暫時(shí)不管)
(2.8)/proc/scsi
表示:目錄中存儲(chǔ)的是當(dāng)前系統(tǒng)上所有SCSI設(shè)備的相關(guān)信息。其中,最主要的文件是/proc/scsi/scsi,它包含每個(gè)已識(shí)別的SCSI設(shè)備的列表,從此列表中,可以獲得設(shè)備類型,型號(hào)名稱,供應(yīng)商,SCSI通道和ID數(shù)據(jù)。
root@ubuntu:/proc# cd scsi root@ubuntu:/proc/scsi# ls device_info mptspi scsi sg usb-storageroot@ubuntu:/proc/scsi# more scsi Attached devices: Host: scsi2 Channel: 00 Id: 00 Lun: 00Vendor: VMware, Model: VMware Virtual S Rev: 1.0 Type: Direct-Access ANSI SCSI revision: 02 Host: scsi4 Channel: 00 Id: 00 Lun: 00Vendor: NECVMWar Model: VMware SATA CD01 Rev: 1.00Type: CD-ROM ANSI SCSI revision: 05 Host: scsi33 Channel: 00 Id: 00 Lun: 00Vendor: Mass Model: Storage Device Rev: Type: Direct-Access ANSI SCSI revision: 00詳細(xì)說明:
紅帽官網(wǎng)學(xué)習(xí):E.3.8. /PROC/SCSI/
(2.9)/proc/sys(非常重要)
表示:/ proc / sys /目錄與與/proc下其它文件的“只讀”屬性不同的是,它不僅提供有關(guān)系統(tǒng)的信息,還允許管理員可對(duì)/proc/sys子目錄中的許多文件內(nèi)容進(jìn)行修改,以更改內(nèi)核的運(yùn)行特性。事先可以使用“l(fā)s -l”命令查看某文件是否“可寫入”。寫入操作通常使用類似于“echo??DATA > /path/to/your/filename”的格式進(jìn)行。
需要注意的是,即使文件可寫,其一般也不可以使用編輯器進(jìn)行編輯。
root@ubuntu:/proc/sys# ls abi debug dev fs kernel net vm(2.10)/proc/sysvipc(重要)
表示:該目錄包含有關(guān)System V IPC資源的信息。 此目錄中的文件與消息(msg),信號(hào)量(sem)和共享內(nèi)存(shm)的System V IPC調(diào)用相關(guān)。
root@ubuntu:/proc/sysvipc# ls msg sem shm詳見博客:進(jìn)程間通信(IPC)——信號(hào)量、共享內(nèi)存、消息隊(duì)列
(2.11)/proc/tty
表示:此目錄包含有關(guān)系統(tǒng)上可用和當(dāng)前使用的tty設(shè)備的信息。 最初稱為電傳打字設(shè)備,任何基于字符的數(shù)據(jù)終端都稱為tty設(shè)備。其中,drivers列出當(dāng)前使用的tty設(shè)備,/proc/tty/driver/serial文件列出了每個(gè)串行tty行的使用情況統(tǒng)計(jì)信息和狀態(tài)。
為了將tty設(shè)備用作網(wǎng)絡(luò)設(shè)備,Linux內(nèi)核在設(shè)備上強(qiáng)制執(zhí)行線路規(guī)則。 這允許驅(qū)動(dòng)程序?qū)⑻囟愋偷念^部放置在通過設(shè)備傳輸?shù)拿總€(gè)數(shù)據(jù)塊上,使得連接的遠(yuǎn)程端可能只是數(shù)據(jù)塊流中的一個(gè)數(shù)據(jù)塊。 SLIP和PPP是常見的線路規(guī)則,每個(gè)規(guī)則通常用于通過串行鏈路將系統(tǒng)連接到另一個(gè)系統(tǒng)。
已注冊(cè)的行規(guī)則存儲(chǔ)在ldiscs文件中,更多詳細(xì)信息可在/proc/ttyldisc目錄中找到。
?
總結(jié)
以上是生活随笔為你收集整理的Linux小工具(3)之/proc目录详细介绍(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux的tty设备介绍
- 下一篇: linux的rc的几种解释