Skip to content

Latest commit

 

History

History
53 lines (48 loc) · 4.25 KB

File metadata and controls

53 lines (48 loc) · 4.25 KB

proc文件系统

/proc 是 Linux 系统中的一个虚拟文件系统,它提供了一种查看和控制正在运行的进程的方式.这个文件系统包含了多个目录,目录名对应于系统中的每个进程的进程ID(PID).每个进程的目录中包含了一些文件,这些文件包含了有关进程的各种信息.以下是一些常见的 /proc 目录下的文件及其解释:

  1. cmdline : 包含启动进程的完整命令行参数.
  2. cwd : 一个符号链接,指向进程的当前工作目录.
  3. environ : 包含进程的环境变量.
  4. exe : 一个符号链接,指向启动该进程的可执行文件.
  5. fd : 包含该进程打开的文件描述符的目录,每个文件描述符都有一个对应的文件.
  6. gid_map : 显示进程的组ID映射.
  7. maps : 显示进程的内存映射,包括代码段、数据段、堆栈等.
  8. mem : 包含进程使用的内存信息.
  9. mounts : 显示进程的挂载点.
  10. mountinfo : 包含更详细的挂载点信息.
  11. numa_maps : 显示进程的NUMA(非统一内存访问)配置.
  12. oom_adj : 进程的OOM(内存不足)调整值,用于确定哪个进程在内存不足时被杀死.
  13. osrelease : 包含操作系统的版本信息.
  14. pid : 进程的PID,这是一个符号链接,指向 /proc/self.
  15. stat : 包含进程的状态信息,如进程ID、父进程ID、CPU时间等.
  16. status : 包含更详细的进程状态信息,如进程的名称、状态、信号等.
  17. task : 包含进程的线程信息.
  18. uid_map : 显示进程的用户ID映射.
  19. wchan : 显示进程正在等待的系统调用.

可以通过读取这些文件来获取进程的详细信息.例如,使用 cat /proc/[pid]/status 可以查看特定进程的状态信息.

  • VmSize : 虚拟内存总大小. 整个进程使用虚拟内存大小,是VmLib, VmExe, VmData, 和 VmStk的总和.占所有虚拟内存分配(文件映射,共享内存,堆内存,任何内存)的份额.
  • VmLck : 虚拟内存锁.进程当前使用的并且加锁的虚拟内存总数.锁住的物理内存不能交换到硬盘.
  • VmRSS : 虚拟内存驻留集合大小.这是驻留在物理内存的一部分.它没有交换到硬盘.它包括代码,数据和栈.
  • VmData : 虚拟内存数据.堆使用的虚拟内存.表示进程数据段的大小.
  • VmStk : 虚拟内存栈.表示进程堆栈段的大小.
  • VmLib : 虚拟内存库,动态链接库所使用的虚拟内存 表示进程所使用LIB库的大小.
  • VmPeak : 代表当前进程运行过程中占用内存的峰值.
  • VmHWM : 是程序得到分配到物理内存的峰值.
  • VmRSS : 是程序现在使用的物理内存.
  • VmExe : 表示进程代码的大小.可执行的虚拟内存,可执行的和静态链接库所使用的虚拟内存
  • VmPTE : 占用的页表的大小.
  • VmSwap : 进程占用Swap的大小.
  • Threads : 表示当前进程组的线程数量.
  • SigPnd : 屏蔽位,存储了该线程的待处理信号,等同于线程的PENDING信号.
  • ShnPnd : 屏蔽位,存储了该线程组的待处理信号.等同于进程组的PENDING信号.
  • SigBlk : 存放被阻塞的信号,等同于BLOCKED信号.
  • SigIgn : 存放被忽略的信号,等同于IGNORED信号.
  • SigCgt : 存放捕获的信号,等同于CAUGHT信号.
  • CapEff : 当一个进程要进行某个特权操作时,操作系统会检查 cap_effective 的对应位是否有效,而不再是检查进程的有效UID是否为0.
  • CapPrm : 表示进程能够使用的能力,在 cap_permitted 中可以包含 cap_effective 中没有的能力,这些能力是被进程自己临时放弃的,也可以说 cap_effectivecap_permitted 的一个子集.
  • CapInh : 表示能够被当前进程执行的程序继承的能力.
  • CapBnd : 是系统的边界能力,我们无法改变它.
  • Cpus_allowed : 3指出该进程可以使用CPU的亲和性掩码,因为我们指定为两块CPU,所以这里就是3,如果该进程指定为4个CPU(如果有话),这里就是F(1111).
  • Cpus_allowed_list : 0-1指出该进程可以使用CPU的列表,这里是0-1.
  • voluntary_ctxt_switches : 表示进程主动切换的次数.
  • nonvoluntary_ctxt_switches : 表示进程被动切换的次数.