全面了解Linux下Proc文件系统
 
Proc是一个虚拟文件系统,在Linux系统中它被挂载于/proc目录之上。Proc有多个功能 ,这其中包括用户可以通过它访问内核信息或用于排错,这其中一个非常有 用的功能,也是Linux变得更加特别的功能就是以文本流的形式来访问进程信息。很Linux命令(比如 ps、toPpstree等)都需要使用这个文件系统的信息。
本文就是向用户介绍一些访问这些信息的方法 。需要说明的是,本文所述的内容并不 一定适用所有内核版本,有部分操作只适用于2.6内核。
一、进程信息
在/proc文件系统中,每一个进程都有一个相应的文件 。下面是/proc目录下的一些重要文件 :
/proc/pid/cmdline 包含了用于开始进程的命令 ;
/proc/pid/cwd包含了当前进程工作目录的一个链接 ;
/proc/pid/environ 包含了可用进程环境变量的列表 ;
/proc/pid/exe 包含了正在进程中运行的程序链接;
/proc/pid/fd/ 这个目录包含了进程打开的每一个文件的链接;
/proc/pid/mem 包含了进程在内存中的内容;
/proc/pid/stat包含了进程的状态信息;
/proc/pid/statm 包含了进程的内存使用信息。
下面是一些获取进程信息的例子:
◆ 假设现在要查看是否所有的进程都会做存储器清除工作。在/proc/pid/stat文件中的每一 个进程标识 (第8个属性)提供了有关进程的很多 “个人”信 息。这个信 息可以对每一个 进程标识进行。
0x00000002 Process being created
0x00000004 Exiting
0x00000008 Dead
0x00000040 Process using
superuser privflage
0x00000200  P rocess dumping core
0x00000400 Prooess received some signal
0x00000800  Process allocating memory
0x00001000 Killed due to out-of--memory condition
笔者从/usr/src/linux/include/linux/sched.h 中提取了这些信息。
◆ /proc/pid/fd/ 目录提供 了有关打开文件的信息。要查看被进程使用的输入文件,使用以下命令 :
# ls –l /proc/pid/fd/0
◆  查看被进程使用socket,使用以下命令 :
#ls –l /proc/pid/fd|sed –n `/socket/{s/.*\[//;s/\]//p}`
有关这些socket的信息可以使用以下命令获取 :
# netstat --ae
◆ 要将命令行参数传递给任意进程,使用以下命令 :
~~cat /proc/pid/cmdline
◆ 要 获取某一进程父进程的ID号,使用以下命令:
#grep PPid/proc/pid/status
二、普通的系统信息
Proc包含了很多系统信息,这其中包括CPU负载、文件系统和网络配置 。下面是一些通过Proc查看和更改系统的例子:
◆ 获取可用系统内存的空间 :
# grep  Free /proc/meminfo
◆ 自从系统最后一次启动后的系统统计可以从/proc/stat文件中获取 :
#grep processes /proc/stat
◆ 获知第 1、5和15分钟系统负载的平均值 :
#awk `{print “1 min:\t” $1 “\n5 min:\t” $2 “\n15 min:\t” $3}` /proc/loadavg
◆ /proc/partitions可用于获取系统的分区信息 。
◆ /proc/net和/proc/sys/net可用于查看和更改重要的网络信息。比如,禁用ping命令,可以以 root身份运行以下命令 :
#echo 1>/proc/sys/net/ipv4/icmp_echo_ignore_all
如果要启用IP转发/IP伪装,使用以下命令 :
#echo 1> /proc/sys/net/ipv4/ip_forward
◆ 已经挂载的文件系统信息可以从/proc/mounts中检索。
◆ 要改变正在使用的主机名 ,使用以下命令:
# echo www.abc.corn >/proc/sys/kernel/hostname
◆ 要获取CPU信息,使用以下命令 :
# cat /proc/cpuinfo
◆ 要获知swap空间的使用情况 ,使用以下命令:
# cat /proc/swaps
◆ 获取系统的正常运行时间:
#cat /proc/uptime
◆ 列出由NFS共享的文件系统:
# cat /proc/fs/nfsd/exports
三、相关内核的信息
这是一个非常宽泛的主题,这里只介绍其中一小部分内容:
◆ 从正在运行的内核中获知内核的版本:
#cat /proc/version
◆ /proc/kmsg文件被作为内核日志信息源,它可以被作为一个系统信息调用的接口使用。
◆ /proc/kcore文件提供了以内核文件格式形式访问系统物理内存,并且可以被gdb用于检查任意内核数据结构的当前状态。如果装了源码,那么可以通过查看/usr/src/linux/Documentation/filesystems/proc.txt文件来获取更多的信息 。
从中可以看出来,Proc是一个非常不错的获取系统信息渠道。如果利用得好,则它对Linux系统的维护和管理能提供非常大的帮助。

本文出自 “李晨光原创技术博客” 博客,谢绝转载!

全面了解Linux下Proc文件系统的更多相关文章

  1. <解说linux下proc文件系统>

    proc文件系统的作用是访问系统内核信息 proc不是一个真实的文件系统,它不占系统的外存空间,只是以文件的形式为用户访问linux内核数据提供接口,因为系统内核总是动态的变化,所以我们所捕捉到的也只 ...

  2. 深入理解linux系统下proc文件系统内容

    深入理解linux系统下proc文件系统内容 内容摘要:Linux系统上的/proc目录是一种文件系统,即proc文件系统. Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它 ...

  3. linux 使用/proc文件系统 实现用户空间与内核模块之间通信

    项目中可能会用到用户态和内核模块之间进行通信的功能.想到linux系统本身很多通信都是通过/proc文件系统来的,比如修改网络中连接跟踪表连接数限制/proc/sys/net/netfilter/nf ...

  4. Linux下/proc目录简介

    文章转载至:http://blog.csdn.net/zdwzzu2006/article/details/7747977 1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在 ...

  5. linux下的文件系统

    转http://www.cnblogs.com/yyyyy5101/articles/1901842.html 谈谈个人对于文件系统的认识,其实这也体现了计算机操作系统的抽象:你不用管计算机中的文件如 ...

  6. linux中proc文件系统 -- ldd3读书笔记

    1./proc 文件系统概述 /proc 文件系统是由软件创建,被内核用来向外界报告信息的一个文件系统./proc 下面的每一个文件都和一个内核函数相关联,当文件的被读取时,与之对应的内核函数用于产生 ...

  7. Linux下/proc目录简介(转)

    1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

  8. Linux下/proc目录的作用

    文章是摘抄过来,方便自己查阅! 1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在 ...

  9. [转]Linux下/proc目录简介

    1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

随机推荐

  1. AngularJs轻松入门(五)过滤器

    在前面几节里我们已经接触过AngularJs的表达式,表达式的作用是向视图中输出字面量或$scope对象中的属性值.在输出之前我们可以通过过滤器来格式化输出的数据. 过滤器的使用非常简单,我们看一下下 ...

  2. jquery easyui ajax data属性传值方式

    $.ajax({   url:url,   type:'post',   data:data,   dataType:'json',   contentType: "application/ ...

  3. Debian9.5 WPS for Linux字体配置(字体缺失解决办法)

    启动WPS for Linux后,出现提示"系统缺失字体" . 出现提示的原因是因为WPS for Linux没有自带windows的字体,只要在Linux系统中加载字体即可. 具 ...

  4. python读取word文档

    周末需要做一个统计word文档字数的问题,刚开始以为很简单,因为之前做过excel表格相关的任务,所以认为利用扩展模块应该比较简单. 通过搜索,确实搜到了一个python操作word的模块,pytho ...

  5. 洛谷1005 【NOIP2007】矩阵取数游戏

    问题描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的n*m的矩阵,矩阵中的每个元素aij均为非负整数.游戏规则如下: 1.每次取数时须从每行各取走一个元素,共n个.m次后取完矩阵所有元素: 2. ...

  6. caioj 1618 【动态规划】矩阵相乘的次数

    刷刷水题压压惊 低级版的能量项链 相当于复习一次中链式dp 这种合并了之后又后效性的题目 都可以用类似的方法做 #include<cstdio> #include<cstring&g ...

  7. hbase源码系列(十二)Get、Scan在服务端是如何处理

    hbase源码系列(十二)Get.Scan在服务端是如何处理?   继上一篇讲了Put和Delete之后,这一篇我们讲Get和Scan, 因为我发现这两个操作几乎是一样的过程,就像之前的Put和Del ...

  8. [Python] Generating random numbers using numpy lib

    import numpy as np def test_run(): data=np.random.random((3,4)) """ [[ 0.80150549 0.9 ...

  9. OC便利方法

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { #if //    从面向对象的角度 ...

  10. android-继承BaseAdapter--自己定义适配器,getView运行多次的解决方法

    定义的getView运行多次的ListView布局: <ListView android:id="@+id/lv_messages" android:layout_width ...