proc文件系统文档


proc文件系统中的内容非常多,注重积累,遇到就去搞清楚!

proc

  • 存储进程信息的伪文件系统
  • proc文件系统是一个伪文件系统,这个文件系统提供了一个访问内核数据结构的接口
  • 通常挂载在目录/proc
    • 通常是由系统自动挂在的
    • 也可以使用命令手动挂载mount -t proc proc /proc
  • proc文件系统中的大部分文件都是只读的,但是部分文件是可写的,允许改变内核变量

挂载选项

  • hidepid=n (从linux3.3开始支持)
    • 这个选项控制谁可以访问/proc/[pid]目录下的信息。参数n可以是如下的值:
      • 0 每个人都可以访问所有的/proc/[pid]目录。
        • 这个是传统行为,也是默认行为。
      • 1 用户只能访问属于自己的/proc/[pid]目录(/proc/[pid]目录本身还是可见的)
        • 敏感文件比如/proc/[pid]/cmdline以及/proc/[pid]/status现在是针对其他用户保护起来了
        • 这样就使得去了解是否其他用户正在运行一个特定的程序变得不可能(只要程序自身不能通过行为表现出在干嘛就行)
      • 2 在mode1的基础上,让属于其他用户的/proc/[pid]目录变得不可见。
        • 这意味着/proc/[pid]入口不再可以用于挖掘系统上的PID
        • 这也隐藏不了带有指定的pid的进程是否存在的事实,因为可以通过其他手段获取到,如kill -0 $PID
        • 但是隐藏了一个进程的UID和GID,因为这个本来是可以通过在/proc/[pid]/目录上调用stat(2)来获取的
        • 这样对于攻击者想要收集运行进程的信息增加了难度
          • 例如,-发现某个守护程序是否正在以提升的特权运行
          • 例如,另一个用户是否正在运行某个敏感程序
          • 例如,其他用户是否在运行何程序,等等。

文件和目录

/proc/interrupts

  • 这用于记录每个IO设备每个CPU的中断数。
  • 从Linux 2.6.24,对于i386以及x86-64体系结构,包含了如下的系统内部中断(也就是说不跟任何设备相关联的)
名称全称详解
NMInonmaskable interrupt非掩码中断
LOClocal timer interrupt本地定时器中断
TLBTLB flush interruptTLB刷新中断,SMP系统才有
RESrescheduling interrupt重调度中断,SMP系统才有
CALremote function call interrupt远程函数调用中断,SMP系统才有

/proc/uptime

  • 此文件包含两个数字
    • 启动的启动时间(秒)
    • 花在空闲进程中的时间(s)

/proc/stat

  • 内核系统统计信息。跟随体系结构而变化。通常的入口包括:
CPU编号user(1)nice(2)system(3)idle(4)iowait(5)irq(6)softirq(7)steal(8)guest(9)guest_nice(10)
cpu61141383131810117142441024000
cpu03014138157135059791329016000
cpu13099015605505735111207000
  • cpu时间
    • cpu行是整个系统的,cpuN行是指定的CPU的
    • 表中的内容都是时间的数量,单位是USER_HZ(在大多数架构上为1/100秒,可以使用sysconf(_SC_CLK_TCK)获取正确值)
    • user(1) 在用户层模式下花的时间
    • nice(2) 带有低优先级的(nice)用户层模式下的花的时间
    • system(3) 系统模式下花的时间
    • idle(4) 空闲任务下花的时间。这个值应该是USER_HZ乘以/proc/uptime文件中的第二个数字
    • iowait(5) 花的时间。等待IO完成的时间。这个值不可靠,原因如下:
      • 1 CPU将不等待I / O完成。 iowait是任务等待I / O完成的时间。 当CPU进入任务I / O的空闲状态时,将在该CPU上调度另一个任务。
      • 2 在多核CPU上,等待I / O完成的任务没有在任何CPU上运行,因此很难计算每个CPU的iowait。
      • 3 在某些情况下,此字段中的值可能会减小。
    • irq(6) 服务中断花的时间
    • softirq(7) 服务软中断花的时间
    • steal(8) 被盗时间,即在虚拟化环境中运行时在其他操作系统上花费的时间
    • guest(9) 在linux内核控制下,为guest操作系统运行虚拟CPU所花费的时间。
    • guest_nice(10) 花在运行一个niced的guest上的时间(Linux内核控制下的guest操作系统的虚拟CPU)
  • page 5741 1808
    • The number of pages the system paged in and the number that were paged out (from disk).
  • swap 1 0
    • The number of swap pages that have been brought in and out.
  • intr 1462898
    • 自引导启动以来针对每种可能的系统中断服务的中断计数。
    • 第一列是所有服务交互的总数,包括未编号的体系结构特定中断;
    • 随后的每一列都是该特定编号的中断的总数。没有编号的中断不显示,仅累加总数。
  • disk_io: (2,0):(31,30,5764,1,2) (3,0):…
    • (major,disk_idx):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written) (Linux 2.4 only)
  • ctxt 115315
    • 系统经历的上下文切换次数
  • btime 769041601
    • 启动时刻,从Epoch以来的秒数
  • processes 86031
    • 从启动以来的fork次数
  • procs_running 6
    • 处于可运行状态的进程数
  • procs_blocked 2
    • 处于阻塞等待IO完成的进程数
  • softirq 229245889 94 60001584 13619 5175704 2471304 28 51212741 59130143 0 51240672
    • 此行显示所有CPU的softirq数。
    • 第一列是所有softirq的总数,后面的每列是特定软中断的总数。 (从Linux 2.6.31开始。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值