<解說linux下proc檔案系統>

Linux.應用發表於2014-06-12

 

proc檔案系統的作用是訪問系統核心資訊
 proc不是一個真實的檔案系統,它不佔系統的外存空間,只是以檔案的形式為使用者訪問linux核心資料提供介面,
因為系統核心總是動態的變化,所以我們所捕捉到的也只是系統核心變化的瞬間。

 

[root@apache ~]# cd /proc/
[root@apache proc]# ls
1     1428  1645  28   867          ioports       partitions
10    1448  1648  29   9            irq           sched_debug
1073  15    1652  3    912          kallsyms      schedstat
11    1526  1689  30   acpi         kcore         scsi
1127  1538  17    31   asound       keys          self
1171  1539  18    345  buddyinfo    key-users  
開啟proc目錄可以看到很多目錄檔名,同時也可以看到當前系統正在執行的程式pid,
甚至通過pid可以找到正在執行的檔案。。

 

下面我們可以看到它一直是在變化的
[root@apache proc]# ps aux | grep vi
root      1726  0.0  0.1   4336   732 pts/0    S+   21:53   0:00 grep vi
[root@apache proc]# ps aux | grep vi
root      1728  0.0  0.1   4336   732 pts/0    S+   21:53   0:00 grep vi
[root@apache proc]# ps aux | grep vi
root      1730  0.0  0.1   4336   732 pts/0    S+   21:53   0:00 grep vi
[root@apache proc]# ps aux | grep vi
root      1732  0.0  0.1   4336   732 pts/0    S+   21:53   0:00 grep vi

下面我們捕捉一個看看:

[root@apache proc]# ls -l /proc/1774/exe  //查詢vim所執行的程式 lrwxrwxrwx. 1 root root 0 Jun 12 21:56 /proc/1774/exe -> /usr/bin/vim

 [root@apache proc]# ls -l /proc/1774/cwd //查詢vim當前的工作目錄,後面不要跟 /
lr我們可以驗證下:
[root@apache proc]# ls -l /proc/1774/cwd/   //檢視vim工作目錄下的檔案,果然是root目錄
total 44wxrwxrwx. 1 root root 0 Jun 12 21:57 /proc/1774/cwd -> /root

-rw-------. 1 root root  1215 May 24 15:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 25032 May 24 15:22 install.log
-rw-r--r--. 1 root root  7345 May 24 15:21 install.log.syslog

[root@apache proc]# ls -l /proc/1774/environ //檢視vim當前的執行環境
-r--------. 1 root root 0 Jun 12 21:57 /proc/1774/environ

 

當然proc目錄當然不是我們想想的那麼小,它很強大。
[root@apache proc]# cat /proc/cpuinfo  //檢視我們系統cpu的資訊
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model  : 58
model name : Intel(R) Core(TM) i5-3210M CPU @ 2.50GHz
stepping : 9
cpu MHz  : 2494.379 //二級快取
cache size :3072 KB //三級快取
========很多很多

[root@apache proc]# cat /proc/meminfo  //也可以查到我們記憶體的資訊
MemTotal:         443692 kB
MemFree:          307832 kB
Buffers:           11892 kB
Cached:            63692 kB
SwapCached:            0 kB
Active:            36008 kB
Inactive:          53752 kB
Active(anon):      14400 kB
Inactive(anon):        8 kB
============

[root@apache proc]# cat /proc/modules  //檢視當前系統被載入的模組,當然也可以使用lsmod
autofs4 20981 3 - Live 0xdd7cd000
sunrpc 215000 1 - Live 0xdd776000
ipt_REJECT 1867 2 - Live 0xdd6e9000
nf_conntrack_ipv4 7694 2 - Live 0xdd6dd000
nf_defrag_ipv4 1039 1 nf_conntrack_ipv4, Live 0xdd6d0000
iptable_filter 2173 1 - Live 0xdd6c4000
ip_tables 9567 1 iptable_filter, Live 0xdd6b8000
ip6t_REJECT 3987 2 - Live 0xdd6a5000
nf_conntrack_ipv6 7207 2 - Live 0xdd699000
nf_defrag_ipv6 9873 1 nf_conntrack_ipv6, Live 0xdd68b000
xt_state 1064 4 - Live 0xdd67e00

=====================
說到模組,我們也可以檢視模組的具體資訊:
[root@apache proc]# modinfo sg //命令加模組顯示模組的資訊
filename:       /lib/modules/2.6.32-279.el6.i686/kernel/drivers/scsi/sg.ko
alias:          char-major-21-*
version:        3.5.34
license:        GPL
description:    SCSI generic (sg) driver
author:         Douglas Gilbert
srcversion:     BD5E4FC33B6E0ABE20D3FB4
depends:    
當然 modinfo不僅僅只能這樣玩,玩法很多。
-a 顯示模組的作者
-n 顯示模組的檔名
-V 顯示模組的版本
不一一舉例很多很多好玩的=============
==============================================

我們都知道下面這條命令可以檢視當前系統的版本
[root@apache proc]# cat /etc/issue
Red Hat Enterprise Linux Server release 6.3 (Santiago)
Kernel \r on an \m

其實proc這個目錄下也存放著我們的版本資訊
[root@apache proc]# cat /proc/version
Linux version 2.6.32-279.el6.i686 (mockbuild@x86-010.build.bos.redhat.com)
 (gcc version 4.4.6 20120305 (Red Hat 4.4.6-4) (GCC) ) #1 SMP Wed Jun 13 18:23:32 EDT 2012

[root@apache proc]# cat /proc/partitions //檢視當前系統已經生效的分割槽資訊, 知道問什麼要分好區要使用partx -d -a重新整理?不重新整理這是看不到的

major minor  #blocks  name

8        0   20971520 sda
   8        1    8192000 sda1
   8        2     204800 sda2
   8        3    1024000 sda3
 253        0    5120000 dm-0

/proc/interrupts 這個目錄非常重要,我們的系統down以後的一些資訊都儲存在這裡面。
[root@apache proc]# cat /proc/interrupts
           CPU0      
  0:        161   IO-APIC-edge      timer
  1:          8   IO-APIC-edge      i8042
  3:          1   IO-APIC-edge   
  4:          1   IO-APIC-edge   
  7:          0   IO-APIC-edge      parport0
  8:          1   IO-APIC-edge      rtc0
  9:          0   IO-APIC-fasteoi   acpi
 12:        110   IO-APIC-edge      i8042
 14:          0   IO-APIC-edge      ata_piix
===================================
這個目錄儲存了當前系統所使用的檔案系統資訊。
[root@apache proc]# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev tmpfs
nodev devtmpfs
nodev binfmt_misc
nodev debugfs
nodev securityfs
nodev sockfs
nodev usbfs
nodev pipefs
nodev anon_inodefs
nodev inotifyfs
nodev devpts

 

 

 

 

 

 

 

 

 

 

 

 

相關文章