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

<解说linux下proc文件系统>的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. Golang学习 - unicode/utf8 包

    ------------------------------------------------------------ // 编码所需的基本数字 const ( RuneError = '\uFFF ...

  2. storm0.9.0.1安装

    storm 0.9.x的好处是引入了netty进行网络传输(需要配置),不用再依赖zeromq和jzmq了 1.下载安装zookeeper ... 2.下载安装storm依赖库 JDK1.6及以上 . ...

  3. MyBatis优化技巧

    ☬配置日志文件 封装工具类 代码贴一下: package com.shxt.utils; import java.io.InputStream; import org.apache.ibatis.io ...

  4. 创建对象_工厂方法(Factory Method)模式 与 静态工厂方法

      工厂方法模式:   定义:为创建对象定义一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟至子类.   应用场景: 客户类不关心使用哪个具体类,只关心该接口所提供的功能: 创建过程比较 ...

  5. 【Android车载系统 News | Tech 1】News 谷歌开发车载Android系统 2014-12-19

    据外国媒体报道,Android和iOS两大操作系统在垄断手机和平板之后,开始向智能家居.智能汽车.客厅娱乐.物联网等领域扩张.谷歌和苹果此 前均推出了连接智能手机和车载信息系统的平台产品.2014年1 ...

  6. 编译代码报出Android library projects cannot be launched错误的解决

    Android library projects cannot be launched错误的解决方法: 右键工程根目录->properties 左侧选择->android

  7. IOS开发UI篇之自动滚动图片

    我们在做项目是有时候会遇到设置自动滚动图片,所以我自己也遇到过两次.觉得他是一个挺有意思东西,所以做了下总结 DEMO: .h #import <UIKit/UIKit.h> @inter ...

  8. 使用keil建立标准STM32工程模版(图文详细版!)

    1.   模板工程的创建(超级详细版,使用的是keil 4.5版本) 1.1创建工程目录 良好的工程结构能让文件的管理更科学,让开发更容易更方便,希望大家养成良好的习惯,使用具有合理结构的工程目录,当 ...

  9. 【原创】C++链表如何像Python List一样支持多种数据类型

    用过Python的码友都知道,Python中List支持多种数据类型,如下面代码所示链表li内的数据类型可以是整数,同时也可以是字符串,当然也可以是其他数据类型. 1: >>> li ...

  10. Zend Studio 上 安装使用Aptana插件(html,css,js代码提示功能) .

    最近装了zend studio 9.0 用了段时间发现写html,css,js代码没提示,要开dreamwaver(对js代码提示也不好).就网上搜索了下,发现了Aptana插件,装上用了下,感觉不错 ...