proc 文件系统

/proc是一个虚拟文件系统,提供访问内核数据结构的接口,用于查看和修改系统属性。它包含系统内存、磁盘I/O、设备信息、进程详情等。例如,/proc/meminfo展示内存使用,/proc/cpuinfo显示CPU详情,/proc/[pid]目录提供进程相关信息,包括命令行、环境变量、打开的文件描述符等。
摘要由CSDN通过智能技术生成

proc 文件系统


参考

proc 简介

  • /proc 文件系统是在 GUN/Linux 操作系统中一个位于内存中虚拟文件系统(in-memory pseudo-file system), 以文件系统目录和文件形式, 提供一个指向内核数据结构的接口,
    通过它能够查看和改变各种系统属性.
  • /proc 目录通常情况下是由系统自动挂载在 /proc 目录下,但是我们也可以自行手动挂载.
  • /proc 目录下的大部分文件都是只读的,部分文件是可写的,我们通过这些可写的文件来修改内核的一些配置;
  • proc 目录是一个控制中心,用户可以通过更改其中某些文件来改变内核的运行状态。
  • proc 目录也是内核提供给我们的查询中心,我们可以通过这些文件查看有关系统硬件及当前正在运行进程的信息。

proc 目录下存的文件

  • 该目录下保存的不是真正的文件和目录,而是一些“运行时”信息,如系统内存、磁盘 io、设备挂载信息和硬件配置信息等。如果读者使用 ls -l 命令查看 proc 目录下的文件,会
    发现该目录下的绝大部分文件大小为 0。虽然这些文件大小为 0,但是,我们却可以使用 cat、moreless 命令查看其中的内容。

  • 关于每一个文件的含义,可以参考附件中的 《Linux下_proc目录简介.html》,或使用下面的命令查看帮助信息

    man proc
    
  • 常见文件举例

    • lsmod 命令读取 /proc/modules 中的信息
    • lspci 命令读取 cat /proc/pci 中的信息
    • cmdline 保存了操作系统的启动参数
    • /proc/loadavg 保存了系统负载的平均值,其前三列分别表示最近1分钟、5分钟及15分的平均负载。反映了当前系统的繁忙情况。
    • /proc/meminfo 当前内存使用的统计信息,常由 free 命令使用;可以使用文件查看命令直接读取此文件,其内容显示为两列,前者为统计属性,后者为对应的值;
    • /proc/diskstats 磁盘设备的磁盘I/O统计信息列表;
    • /proc/net/dev 网络流入流出的统计信息,包括接收包的数量、发送包的数量,发送数据包时的错误和冲突情况等。
    • /proc/filesystem文件可以查看当前系统中支持的文件系统
    • /proc/cpuinfo 文件可以查看 cpu 的详细信息
    • /proc/cmdline 在启动时传递至内核的启动参数,通常由grub启动管理工具进行传递;
    • /proc/devices 系统已经加载的所有块设备和字符设备的信息;
    • /proc/mounts 系统中当前挂载的所有文件系统;
    • /proc/partitions 块设备每个分区的主设备号(major)和次设备号(minor)等信息,同时包括每个分区所包含的块(block)数目;
    • /proc/uptime 系统上次启动以来的运行时间;
    • /proc/version 当前系统运行的内核版本号,在作者的Debian系统中,还会显示系统安装的gcc版本;
    • /proc/vmstat 当前系统虚拟内存的统计数据。
    • 以及很多以 pid 为目录名的进程目录 – 该文档讨论重点

进程目录下常用文件介绍

proc 目录下有很多名字为数字的目录,目录的名称与进程的 pid一一对应(形如/proc[pid]),我们可以通过这些目录查看进程相关的信息。
显然,目录的名称随着进程的生命周期变化,当进程退出时,相应的目录也就会消失。进程目录下也包含了较多的文件和目录,其中,比
较常用的有:

  • cmdline

    cmdline 与 /proc/cmdline 文件类似,保存了当前进程的启动命令;
    
    # cat cmdline
    ./a.out
    
  • cwd

    cwd 是一个符号链接(软连接),指向进程的运行目录;
    
  • exe

    exe 也是一个软链接,指向启动进程的可执行文件,通过 /proc/[pid]/exe 可以启动当前进程的一个拷贝;
    
  • environ

    包含于进程相关联的环境变量,变量名用大写字母表示,其值用小写字母表示;
    
    # cat environ
    
    XDG_SESSION_ID=215
    HOSTNAME=localhost.localdomain
    TERM=xterm
    SHELL=/bin/bash
    HISTSIZE=1000
    SSH_CLIENT=172.18.0.104 46259 22
    SSH_TTY=/dev/pts4
    USER=root
    LS_COLORS=rs=0:di=01;34:ln=01;...... 
    MAIL=/var/spool/mail/rootPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    PWD=/rootLANG=en_US.UTF-8
    HISTCONTROL=ignoredups
    SHLVL=1
    HOME=/root
    LOGNAME=root
    SSH_CONNECTION=172.18.0.104 46259 172.18.0.99 22
    LESSOPEN=||/usr/bin/lesspipe.sh %s
    XDG_RUNTIME_DIR=/run/user/0_=./a.out
    
    注意:以上输出经过美化缩减换行,原输出为一行数据
    
  • fd

    fd 目录包含了进程打开的每一个文件的文件描述符(file descriptor),这些文件描述符是指向实际文件的一个符号链接;
    fd 目录下的文件,与文件一一对应,我们可以通过 fd 目录下的文件个数,统计当前进程打开的文件句柄数。此外,也可以直接读取文件的内容,就像读取真实文件一样。
    
  • limits

    保存了进程使用资源的限制信息,包括软限制、硬限制以及取值的单位;
    
    [root@localhost 23730]# cat limits
    Limit                     Soft Limit           Hard Limit           Units     
    Max cpu time              unlimited            unlimited            seconds   
    Max file size             unlimited            unlimited            bytes     
    Max data size             unlimited            unlimited            bytes     
    Max stack size            8388608              unlimited            bytes     
    Max core file size        0                    unlimited            bytes     
    Max resident set          unlimited            unlimited            bytes     
    Max processes             12946                12946                processes 
    Max open files            1024                 4096                 files     
    Max locked memory         65536                65536                bytes     
    Max address space         unlimited            unlimited            bytes     
    Max file locks            unlimited            unlimited            locks     
    Max pending signals       12946                12946                signals   
    Max msgqueue size         819200               819200               bytes     
    Max nice priority         0                    0                    
    Max realtime priority     0                    0                    
    Max realtime timeout      unlimited            unlimited            us   
    
  • task

    该目录下包含了当前进程所运行的每一个线程的相关信息,每个线程的相关信息文件均保存在一个由线程号(tid)命名的目录中。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值