linux提供了一种特殊的文件系统procfs,通常以/proc目录的形式呈现。该目录中包含了许多特殊文件用来对驱动程序和内核信息进行更高层的访问。只要应用程序有正确的访问全息,就可以通过读写这些文件获得信息或设置参数。

例如/proc/cpuinfo给出的是cpu的详细信息:

我的笔记本是4核机器

processor    :
vendor_id : GenuineIntel
cpu family :
model :
model name : Intel(R) Core(TM) i7-3520M CPU @ .90GHz
stepping :
microcode : 0x1c
cpu MHz : 1227.289
cache size : KB
physical id :
siblings :
core id :
cpu cores :
apicid :
initial apicid :
fpu : yes
fpu_exception : yes
cpuid level :
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht
          tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf
          eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic popcnt
           tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm ida arat epb pln pts dtherm tpr_shadow vnmi flexpriority ept
          vpid fsgsbase smep erms xsaveopt
bugs :
bogomips : 5787.00
clflush size :
cache_alignment :
address sizes : bits physical, bits virtual
power management:

类似地,cat /proc/meminfo 和cat /proc/version分别废除是内存使用情况和内核版本信息。

[root@dhcp-- proc]# cat /proc/version
Linux version 4.4.-.fc23.x86_64 (mockbuild@bkernel02.phx2.fedoraproject.org)
(gcc version 5.3. (Red Hat 5.3.-) (GCC) ) # SMP Wed Mar :: UTC

每次读者写文件的内容时,他们所提供的信息都会及时更新。

---------------------

你可以通过心和函数获得更过的信息,位于/proc目录的子目录中,

例如,可以通过/proc/net/sockstat文件获得网络套接字的使用统计:

[root@dhcp-- proc]# cat /proc/net/sockstat
sockets: used
TCP: inuse orphan tw alloc mem
UDP: inuse mem
UDPLITE: inuse
RAW: inuse
FRAG: inuse memory

另外,/proc中的有些条目不仅可以被读取,而且还可以被修改。

例如系统中所有运行的程序同时能打开的文件总数是linux内核的一个参数,它的当前值可以通过读取/proc/sys/fs/file-max文件得到

[root@dhcp-- proc]# cat /proc/sys/fs/file-max

你可以对通过修改此文件,来修改linux的这个参数。

======================

/proc目录中一数字命名的子目录用于提供正在运行的程序的信息。

利用pe -ef | grep firefox查看firefox的进程号

可以在/proc/firefox进程号 文件中查看进程的执行情况

[root@dhcp-- proc]# ls -l /proc/
total
dr-xr-xr-x. lizhen lizhen Jun : attr
-rw-r--r--. lizhen lizhen Jun : autogroup
-r--------. lizhen lizhen Jun : auxv
-r--r--r--. lizhen lizhen Jun : cgroup
--w-------. lizhen lizhen Jun : clear_refs
-r--r--r--. lizhen lizhen Jun : cmdline
-rw-r--r--. lizhen lizhen Jun : comm
-rw-r--r--. lizhen lizhen Jun : coredump_filter
-r--r--r--. lizhen lizhen Jun : cpuset
lrwxrwxrwx. lizhen lizhen Jun : cwd -> /home/lizhen
-r--------. lizhen lizhen Jun : environ
lrwxrwxrwx. lizhen lizhen Jun : exe -> /usr/lib64/firefox/firefox
dr-x------. lizhen lizhen Jun : fd
dr-x------. lizhen lizhen Jun : fdinfo
-rw-r--r--. lizhen lizhen Jun : gid_map
-r--------. lizhen lizhen Jun : io
-r--r--r--. lizhen lizhen Jun : latency
-r--r--r--. lizhen lizhen Jun : limits
-rw-r--r--. lizhen lizhen Jun : loginuid
dr-x------. lizhen lizhen Jun : map_files
-r--r--r--. lizhen lizhen Jun : maps
-rw-------. lizhen lizhen Jun : mem
-r--r--r--. lizhen lizhen Jun : mountinfo
-r--r--r--. lizhen lizhen Jun : mounts
-r--------. lizhen lizhen Jun : mountstats
dr-xr-xr-x. lizhen lizhen Jun : net
dr-x--x--x. lizhen lizhen Jun : ns
-r--r--r--. lizhen lizhen Jun : numa_maps
-rw-r--r--. lizhen lizhen Jun : oom_adj
-r--r--r--. lizhen lizhen Jun : oom_score
-rw-r--r--. lizhen lizhen Jun : oom_score_adj
-r--------. lizhen lizhen Jun : pagemap
-r--------. lizhen lizhen Jun : personality
-rw-r--r--. lizhen lizhen Jun : projid_map
lrwxrwxrwx. lizhen lizhen Jun : root -> /
-rw-r--r--. lizhen lizhen Jun : sched
-r--r--r--. lizhen lizhen Jun : schedstat
-r--r--r--. lizhen lizhen Jun : sessionid
-rw-r--r--. lizhen lizhen Jun : setgroups
-r--r--r--. lizhen lizhen Jun : smaps
-r--------. lizhen lizhen Jun : stack
-r--r--r--. lizhen lizhen Jun : stat
-r--r--r--. lizhen lizhen Jun : statm
-r--r--r--. lizhen lizhen Jun : status
-r--------. lizhen lizhen Jun : syscall
dr-xr-xr-x. lizhen lizhen Jun : task
-r--r--r--. lizhen lizhen Jun : timers
-rw-r--r--. lizhen lizhen Jun : uid_map
-r--r--r--. lizhen lizhen Jun : wchan
[root@dhcp-- proc]#

/proc 文件系统的更多相关文章

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

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

  2. proc文件系统

    在shell终端里不带任何参数,直接运行mount命令可以显示正在挂载的文件系统.其中有这么一行 none on /proc type proc (rw) 这就是/proc文件系统.第一个域显示non ...

  3. proc文件系统在内核中的表现

    当Linux内核启动起来之后,我们可以通过proc虚拟文件系统来查看内的中的一些动态信息. 例如:可以 cat  /proc/misc  来查看系统中装载的所有misc类设备 cat  /proc/d ...

  4. 使用 /proc 文件系统来访问 linux操作系统 内核的内容 && 虚拟文件系统vfs及proc详解

    http://blog.163.com/he_junwei/blog/static/19793764620152743325659/ http://www.01yun.com/other/201304 ...

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

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

  6. (转)使用 /proc 文件系统来访问 Linux 内核的内容

    转载网址:http://www.ibm.com/developerworks/cn/linux/l-proc.html 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口/proc 文件系统是 ...

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

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

  8. 在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world

    一.题目 编写一个内核模块,在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world.内核版本要求2.6.18 二.实验环境 物理主机:w ...

  9. linux kernel (proc文件系统)参数

    http://blog.csdn.net/guowake/article/details/3279796 Linux Proc文件系统,通过对Proc文件系统进行调整,达到性能优化的目的. 二./pr ...

  10. kobox: key_proc.c -v1 怎样使用proc文件系统调试驱动

    使用proc文件系统能够非常方便调试驱动.查看驱动中的一些数据 平台:TQ2440 系统版本号: root@ubuntu:/mnt/shared/kobox# uname -a Linux ubunt ...

随机推荐

  1. 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)

    递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...

  2. Codeforces Round #313 (Div. 2) A B C 思路 枚举 数学

    A. Currency System in Geraldion time limit per test 2 seconds memory limit per test 256 megabytes in ...

  3. Sql Server_笔记

    1.随机取出10条数据:select top 10 * from tablename order by newid()

  4. Java跟C.C++相互调用

    //由于诸多误解,我对函数注解说明下,这2个参数谁才是真正的皇帝,谁代替谁了//首先.这个函数是我自己为说明问题写的,由于和头文件写在一起,故此加入这个宏,//不然c++编译器报告类型不对,你懂得// ...

  5. Java——设计模式(装饰模式_IO)

     /* * 装饰设计模式: *  对一组对象的功能进行增强时,就可以使用该模式进行问题的解决; * 装饰和继承都能实现一样的特点:  就是进行功能的扩转增强. * */ public class  ...

  6. 黑马程序员——JAVA基础之常用DOS命令和环境变量的配置

    ------- android培训.java培训.期待与您交流! ----------   1.常用dos命令: dir   显示当前文件下目录                             ...

  7. JDBC getMetaData将结果集组装到List

    transient List query(Config config, Connection conn, String sql, Object paras[]) throws SQLException ...

  8. OSGi 的由来和本质特性

    OSGi 的由来 随着科技和需求的发展和变化,现在的软件变得越来越庞大.这样,随之而来的最大挑战就是软件在设计上的越来越复杂和维护上的越来越困难.为了解决这个问题,软件架构师将软件切分成比较小的并且易 ...

  9. 理解MySQL——复制(Replication)

    1.复制概述 1.1.复制解决的问题数据复制技术有以下一些特点:(1)    数据分布(2)    负载平衡(load balancing)(3)    备份(4)    高可用性(high avai ...

  10. java 锁讲解

    每个锁对象都有两个队列,一个是就绪队列,一个是阻塞队列,就绪队列存储了将要获得锁的线程,阻塞队列存储了被阻塞的线程,当一个被线程被唤醒 (notify)后,才会进入到就绪队列,等待获得锁.当一开始线程 ...