proc文件系統的做用是訪問系統內核信息
proc不是一個真實的文件系統,它不佔系統的外存空間,只是以文件的形式爲用戶訪問linux內核數據提供接口,
由於系統內核老是動態的變化,因此咱們所捕捉到的也只是系統內核變化的瞬間。node
[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能夠找到正在運行的文件。。linux
下面咱們能夠看到它一直是在變化的
[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 viapache
下面咱們捕捉一個看看:vim
[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 -> /rootui
-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.syslogspa
[root@apache proc]# ls -l /proc/1774/environ //查看vim當前的運行環境
-r--------. 1 root root 0 Jun 12 21:57 /proc/1774/environdebug
固然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 sysfsnodev rootfsnodev bdevnodev procnodev cgroupnodev cpusetnodev tmpfsnodev devtmpfsnodev binfmt_miscnodev debugfsnodev securityfsnodev sockfsnodev usbfsnodev pipefsnodev anon_inodefsnodev inotifyfsnodev devpts