• Linux-/proc目录简介


    Linux /proc目录简介

    1.简单了解

    以文件系统的方式为访问系统内核数据的操作提供接口

    由linux内核提供:通过/proc文件系统,在运行时访问内核内部数据结构、改变内核设置的一种机制

    proc文件系统是一个虚拟文件系统,只存在于内存当中,而不占用外存空间。

    用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息是动态改变的(如进程),所以用户和系统程序读取proc时,proc文件系统是动态从内核读出所需信息并提交的。

    2.proc下面的文件或子文件夹

    proc下面的文件或文件夹取决于内核配置和装载的模块。比较重要的三个目录如下:

    sys:可写,通过它来访问或修改内核参数
    net与scsi:依赖于内核配置,若系统不支持scsi,则scsi目录不存在

    还有一些以数字命名的目录,属于进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的PID号为目录号,他们是读取进程信息的接口。

    self目录就是读取进程本身的信息接口,是一个link,你可以去/proc目录下看一下,你会发现self软链的进程pid会变动。说明当前正在获取此pid的信息。

    # ll self
    lrwxrwxrwx 1 root root 0  8月 23 09:55 self -> 18728/
    # ll self
    lrwxrwxrwx 1 root root 0  8月 23 09:55 self -> 18729/
    # ll self
    lrwxrwxrwx 1 root root 0  8月 23 09:55 self -> 18730/
    # ll self
    lrwxrwxrwx 1 root root 0  8月 23 09:55 self -> 18731/
    

    再来看看其他目录吧

    • buddyinfo:每个内存区中的每个order有多少块可用,和内存碎片问题有关

    • cmdline:启动时传递给kernel的参数信息

    more cmdline

    BOOT_IMAGE=/boot/vmlinuz-4.2.0-27-generic.efi.signed root=UUID=396873ff-c6f0-44ba-9c8f-a40e5e1c5c67 ro quiet splash vt.handoff=7
    ```

    • cpuinfo: cpu的信息

    • crypto:内核使用的所有已安装的加密密码及细节

    • devices:已经加载的设备并分类

    • dma:已注册使用的ISA DMA频道列表

    • execdomains:Linux内核当前支持的execution domains

    • fb:帧缓冲设备列表,包括数量和控制它的驱动

    • filesystems:内核当前支持的文件系统类型

    • interrupts:X86架构中每个IRQ中断数

    • iomem:每个物理设备当前在系统内存中的映射

    • ioports:一个设备输入输出所使用的注册端口范围

    • kcore:代表系统的物理内存,存储为核心文件格式,里面显示的是字节数,等于RAM大小加上4kb

    • kmsg:记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理

    • loadavg:根据过去一段时间内cpu和io的状态得出的负载状态,与uptime命令有关

    more loadavg

    0.02 0.09 0.16 1/800 19755
    root@ruanyang-HP-ProDesk-680-G2-MT:/proc# uptime
    14:48:59 up 10 days, 4:53, 11 users, load average: 0.02, 0.09, 0.16
    root@ruanyang-HP-ProDesk-680-G2-MT:/proc# ps -ef | grep 19755
    root 19758 32401 0 14:49 pts/42 00:00:00 grep --color=auto 19755
    ```

    - loadavg文件里面一共五个值,前三个值分别是前1分钟、5分钟、15分钟内的平均负载,第四个数表示当前运行的进程数与总进程数的比例,最后一个数字表示的是最近运行的进程id
    
    -  系统平均负载:在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:
    	- 没有在等待I/O操作的结果
    	- 没有主动进入等待状态(就是没有调用wait)
    	- 没有被停止(eg:等待终止)
    
    一般来讲,每个CPU内核当前活动进程数不大于3,则系统运行表现良好,这里说的是每个CPU内核,就是说如果主机是四核CPU的话,就是12个,当大于12的时候,系统负载就会很严重。最直接的表现就是特别慢,甚至出现卡死的情况。
    
    • locks:内核锁住的文件列表

    • mdstat:多硬盘,RAID配置信息

    • meminfo:RAM使用的相关信息

    • misc:其他的主要设备(设备号为10)上注册的驱动

    • modules:所有加载到内核的模块列表

    • mounts:系统中使用的所有挂载

    • mtrr:系统使用的Memory Type Range Registers (MTRRs)

    • partitions:分区中的块分配信息

    • pci:系统中的PCI设备列表

    • slabinfo:系统中所有活动的slab缓存信息

    • stat:所有的CPU活动信息

    • sysrq-trigger:

      见博客sysrq-trigger的详解

    参考文献:
    linux中uptime命令查看linux系统负载

  • 相关阅读:
    接口自动化框架脚手架利用反射机制实现接口统一发起端
    Google开源依赖注入框架Guice指南
    浅谈依赖注入的实现
    MindStudio模型训练场景精度比对全流程和结果分析
    应用现代化产业联盟,正式成立
    OpenHarmony移植案例: build lite源码分析之hb命令__entry__.py
    开源遇上华为云——DataX for HuaweiCloud OBS
    想开发DAYU200,我教你
    动手实践丨使用华为云IoT边缘体验“边云协同”
    想会用synchronized锁,先掌握底层核心原理
  • 原文地址:https://www.cnblogs.com/cherishry/p/5885173.html
Copyright © 2020-2023  润新知