Linux 的 /proc 粗解

红薯 发布于 2010/07/02 22:54
阅读 388
收藏 3

/proc是中proc是process的简写,只存在内存中。它以文件系统的方式,为访问系统内核数据的操作提供接口。用户和应用程序可以通过 /proc得到系统的信息,并可以改变内核的某些参数。

说些最常用的/proc命令,希望对大家日常操作有所帮助。
使用procinfo查看当前系统信息:
1    sudo apt-get install procinfo
2    $procinfo

Memory:        Total        Used        Free     Buffers
RAM:         1016704      884612      132092       51836
Swap:        3904504           0     3904504

Bootup: Fri Jul  2 21:07:00 2010   Load average: 1.60 1.72 1.54 3/271 2364

user  :   00:28:59.35  28.4%  page in :           419184
nice  :   00:00:04.50   0.1%  page out:           136140
system:   00:14:13.38  13.9%  page act:            36117
IOwait:   00:01:08.71   1.1%  page dea:                0
hw irq:   00:00:03.89   0.1%  page flt:          1539030
sw irq:   00:00:05.94   0.1%  swap in :                0
idle  :   00:57:36.25  56.4%  swap out:                0
uptime:   00:50:00.55         context :          8320076

irq   0:     859681  timer               irq  17:          0  uhci_hcd:usb3
irq   1:         10  i8042               irq  18:          0  uhci_hcd:usb4
irq   8:          1  rtc0                irq  19:          0  uhci_hcd:usb5
irq   9:       1210  acpi                irq  28:      27979  ahci
irq  12:        135  i8042               irq  29:      30980  eth0
irq  16:     195537  ehci_hcd:usb1, uh

sda            12676r           12525w

eth0        TX 4.05MiB       RX 14.95MiB      lo          TX 26.72KiB      RX 26.72KiB
eth1        TX 0.00B         RX 0.00B         tun0        TX 3.35MiB       RX 12.38MiB

如上表所示,非常详细,包括启动时间,irq分配,网卡流量等信息。
查看cpu信息:
1    cat /proc/cpuinfo

现在,您可以忘记cpu-z了。

如果您想查询自己的cpu是否支持虚拟化功能,那么仅仅需要——
1    grep -E '(vmx|svm)' /proc/cpuinfo

如果有输出则证明您的cpu支持虚拟化,没有则证明cpu不支持。
既然有cpu的,当然还有内存的啦:
1    cat /proc/meminfo

在购买pc的时候,可以派上大用场的。 :)
列出可供使用的文件系统类型

一种类型一行。虽然它们通常是编入内核的文件系统类型,但该文件还可以包含可加载的内核模块加入的其它文件系统类型。
1    cat /proc/filesystems
显示当前系统所有已经挂载的设备:
1    cat /proc/mounts

这个命令比较常用,检测tmpfs是否正确使用,以及挂载是否正确,检查挂载点时候都可以用到。(vps无法使用)
显示系统启动时间:
1    cat /proc/uptimes

这个是供uptime命令是用的源,比较这两个数字能够告诉你长期来看CPU周期浪费的比例。
获取系统内核信息:
1    cat /proc/version

这个和uname基本相似,输出结果为:

delectate@delectate-laptop:/proc$ cat ./version
Linux version 2.6.32-22-generic (buildd@palmer) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #36-Ubuntu SMP Thu Jun 3 22:02:19 UTC 2010

/proc/net子目录

此目录下的文件描述了联网代码的行为。

很多和网络相关的数据都可以从这里找到。例如流量统计的dev,arp的arp,原始路由表route,还有tcp,upd等接口的信息。

/proc/sys子目录

sys子目录太过于复杂,而且一般用户也很少涉及,我接触linux两年仅仅用到过这个:

手工释放内存:
1    sudo sync
2    #同步内存和磁盘数据,以免释放后数据丢失
3     echo 3 > /proc/sys/vm/drop_caches
4    #释放pagecache,则echo 1;释放dentries 和 inodes则使用echo 2;释放所有则使用echo 3。

/proc/sys是直接操作内核以及系统相关的,所以操作时请慎重。所有proc及相关信息,您均可以从手册获得:
1    man proc

基本上所有的/proc文件,均可以编程获得,您可以在您的程序中控制或者使用这些参数。

加载中
返回顶部
顶部