• <解说linux下proc文件系统>


    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 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

  • 相关阅读:
    泛型
    java unicode补充字符带来的码点和代码单元问题
    GIT相关
    Html5 Canvas学习
    解决animate动画连续播放bug
    自定义对象级别的组件开发
    关于常用却忘记的css,jQuery
    json格式初涉
    ajax
    jquery.validation.js的自定义方法
  • 原文地址:https://www.cnblogs.com/linux-super-meng/p/3784818.html
Copyright © 2020-2023  润新知