Linux---/proc目录全讲解

一、大概内容预览

# ls /proc
  • 1

在这里插入图片描述
1、pid目录
在这里插入图片描述
“/proc/[pid]”,目录,pid为进程的数字ID,是个数值,每个运行着的进程都有这么一个目录。
“/proc/[pid]/attr”,目录,提供了安全相关的属性,可读可写,以支持安全模块如SELinux等,需配置CONFIG_SECURITY。
“/proc/[pid]/attr/current”,文件,当前的安全相关的属性。
“/proc/[pid]/attr/exec”,文件,执行命令execve时设置的安全相关的属性。
“/proc/[pid]/attr/fscreate”,文件,执行命令open、mkdir、symlink、mknod时设置的安全相关的属性。
“/proc/[pid]/attr/keycreate”,文件,执行命令add_key时设置的安全相关的属性。
“/proc/[pid]/attr/prev”,文件,最后一次执行命令execve时的安全相关的属性,即前一个“/proc/[pid]/attr/current”。
“/proc/[pid]/attr/sockcreate”,文件,创建socket时设置的安全相关的属性。
“/proc/[pid]/auxv”,文件,ELF解释器信息,格式为一个unsigned long类型的ID加一个unsigned long类型的值,最后为两个0(man getauxval)。
“/proc/[pid]/cgroup”,文件,进程所属的控制组,格式为冒号分隔的三个字段,分别是结构ID、子系统、控制组,需配置CONFIG_CGROUPS。
“/proc/[pid]/clear_refs”,文件,只写,只用于进程的拥有者,清除用于估算内存使用量的PG_Referenced和ACCESSED/YOUNG,有1、2、3、4四种策略,1表示清除相关的所有页,2表示清除相关的匿名页,3表示清除相关的映射文件的页,4表示清除相关的soft-dirty的页,需配置CONFIG_PROC_PAGE_MONITOR。
“/proc/[pid]/cmdline”,文件,只读,保存启动进程的完整的命令行字符串,如果是僵尸进程,这个文件为空。
“/proc/[pid]/comm”,文件,进程的命令名,不同的线程(man clone prctl pthread_setname_np)可能有不同的线程名,位置在“task/[tid]/comm”,名字长度超过TASK_COMM_LEN时会被截断。
“/proc/[pid]/coredump_filter”,文件,coredump过滤器,如00000033(man core),不同的二进制位表示过滤不同的信息。
“/proc/[pid]/cpuset”,文件,控制CPU和内存的节点(man cpuset)。
“/proc/[pid]/cwd”,目录,符号链接到当前工作目录。
“/proc/[pid]/environ”,文件,环境变量。
“/proc/[pid]/exe”,文件,符号链接到启动进程的完整命令。
“/proc/[pid]/fd/”,目录,包含当前的fd,这些fd符号链接到真正打开的文件。
“/proc/[pid]/fdinfo/”,目录,包含当前fd的信息,不同类型的fd信息不同。
“/proc/[pid]/io”,文件,IO信息。
“/proc/[pid]/gid_map”,文件,从用户命名空间映射的组ID的信息(man user_namespaces)。
“/proc/[pid]/limits”,文件,资源软、硬限制(man getrlimit)。
“/proc/[pid]/map_files/”,目录,包括一些内存映射文件(man mmap),文件名格式为BeginAddress-EndAddress,符号链接到映射的文件,需要配置CONFIG_CHECKPOINT_RESTORE。
“/proc/[pid]/maps”,文件,内存映射信息,下面“proc-pid-maps”详细介绍。
“/proc/[pid]/mem”,文件,用于通过open、read、lseek访问进程的内存页。
“/proc/[pid]/mountinfo”,文件,挂载信息,格式为36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue,以空格作为分隔符,从左到右各字段的意思分别是唯一挂载ID、父挂载ID、文件系统的设备主从号码、文件系统中挂载的根节点、相对于进程根节点的挂载点、挂载权限等挂载配置、可选配置、短横线表示前面可选配置的结束、文件系统类型、文件系统特有的挂载源或者为none、额外配置。
/proc/[pid]/mounts,文件,挂载在当前进程的文件系统列表,格式参照(man fstab)。
/proc/[pid]/mountstats,文件,挂载信息,格式形如device /dev/sda7 mounted on /home with fstype ext3 [statistics]。
/proc/[pid]/ns/,目录,保存了每个名字空间的入口,详见(man namespaces)。
/proc/[pid]/numa_maps,文件,numa即Non Uniform Memory Access,详见(man numa)。
/proc/[pid]/oom_adj,文件,调整OOM分数,OOM即Out Of Memory,发生OOM时OOM Killer根据OOM分数杀掉分数高的进程,默认值为0,会继承自父进程的设置。
/proc/[pid]/oom_score,文件,OOM分数。
/proc/[pid]/oom_score_adj,文件,OOM分值介于-1000到1000之间。
/proc/[pid]/pagemap,文件,当前进程的虚拟内存页映射信息,需要配置CONFIG_PROC_PAGE_MONITOR。
/proc/[pid]/personality,文件,进行执行域。
/proc/[pid]/root,目录,链接到了当前进程的根目录。
/proc/[pid]/seccomp,文件,seccomp模式下允许的系统调用只有read、write、_exit、sigreturn,Linux 2.6.23已弃用这个文件,由prctl替代。
/proc/[pid]/setgroups,文件,详见(man user_namespaces)。
“/proc/[pid]/smaps”,文件,内存映射信息,类似于pmap命令,需要配置CONFIG_PROC_PAGE_MONITOR,下面“proc-pid-smaps”详细介绍。
/proc/[pid]/stack,文件,内核空间的函数调用堆栈,需要配置CONFIG_STACKTRACE。
/proc/[pid]/stat,文件,进程状态信息,用于ps命令。
/proc/[pid]/statm,文件,进程内存使用信息,以空格分隔的7个数字,从左到右分别表示程序总大小、常驻内存大小、共享内存页大小、text code、library、data + stack、dirty pages。
/proc/[pid]/status,文件,可读性好的进程相关信息,下面“proc-pid-status”详细介绍。
/proc/[pid]/syscall,文件,系统调用相关信息,需要配置CONFIG_HAVE_ARCH_TRACEHOOK。
/proc/[pid]/task,目录,每个线程一个子目录,目录名为线程ID。
/proc/[pid]/timers,文件,POSIT定时器列表,包括定时器ID、信号等信息。
/proc/[pid]/uid_map,文件,用户ID映射信息,详见(man user_namespaces)。
/proc/[pid]/gid_map,文件,组ID映射信息,详见(man user_namespaces)。
/proc/[pid]/wchan,文件,进程休眠时内核中相应位置的符号表示,如do_wait。

(1)/proc/[pid]/maps
在这里插入图片描述
address字段表示进程中内存映射占据的地址空间,格式为十六进制的BeginAddress-EndAddress。
perms字段表示权限,共四个字符,依次为rwxs或rwxp,其中r为read,w为write,x为execute,s为shared,p为private,对应位置没有权限时用一个短横线代替。
offset字段表示内存映射地址在文件中的字节偏移量。
dev字段表示device,格式为major:minor。
inode字段表示对应device的inode,0表示内存映射区域没有关联的inode,如未初始化的BSS数据段就是这种情况。
pathname字段用于内存映射的文件,对于ELF格式的文件来说,可以通过命令readelf -l查看ELF程序头部的Offset字段,与maps文件的offset字段作对比。pathname可能为空,表示匿名映射,这种情况下难以调试进程,如gdb、strace等命令。除了正常的文件路径之外,pathname还可能是下面的值:
[stack] 初始进程(主线程)的stack
[stack:] 线程ID为tid的stack
[vdso] Virtual Dynamically linked Shared Object
[heap] 进程的heap
(2)/proc/[pid]/smaps
在这里插入图片描述
第一行内容同maps文件,剩下的是各种类型的内存映射大小,其中Rss表示当前常驻在RAM中的内存,Pss表示进程按比例共享的内存。
(3)/proc/[pid]/status
status文件内容的格式如下(查看当前shell命令所在进程的信息):
在这里插入图片描述
2、bus目录
/proc/bus,目录,已安装的总线。
/proc/bus/pccard
/proc/bus/pccard/drivers
/proc/bus/pci
/proc/bus/pci/devices

3、net目录
/proc/net,目录,网络伪文件系统相关。
/proc/net/arp
/proc/net/dev
/proc/net/dev_mcast
/proc/net/igmp
/proc/net/rarp
/proc/net/raw
/proc/net/snmp
/proc/net/tcp
/proc/net/udp
/proc/net/unix
/proc/net/netfilter/nfnetlink_queue

4、sys目录

5、meminfo目录
MemTotal:所有可用的内存大小,物理内存减去预留位和内核使用。系统从加电开始到引导完成,firmware/BIOS要预留一些内存,内核本身要占用一些内存,最后剩下可供内核支配的内存就是MemTotal。这个值在系统运行期间一般是固定不变的,重启会改变。
MemFree:表示系统尚未使用的内存。
MemAvailable:真正的系统可用内存,系统中有些内存虽然已被使用但是可以回收的,比如cache/buffer、slab都有一部分可以回收,所以这部分可回收的内存加上MemFree才是系统可用的内存
Buffers:用来给块设备做缓存的内存,(文件系统的 metadata、pages)
Cached:分配给文件缓冲区的内存,例如vi一个文件,就会将未保存的内容写到该缓冲区
SwapCached:被高速缓冲存储用的交换空间(硬盘的swap)的大小
active:经常使用的高速缓冲存储器页面文件大小
Inactive:不经常使用的高速缓冲存储器文件大小
Active(anon):活跃的匿名内存
Inactive(anon):不活跃的匿名内存
Active(file):活跃的文件使用内存
Inactive(file):不活跃的文件使用内存
Unevictable:不能被释放的内存页
Mlocked:系统调用 mlock 家族允许程序在物理内存上锁住它的部分或全部地址空间。这将阻止Linux 将这个内存页调度到交换空间(swap space),即使该程序已有一段时间没有访问这段空间
SwapTotal:交换空间总内存
SwapFree:交换空间空闲内存
Dirty:等待被写回到磁盘的
Writeback:正在被写回的
AnonPages:未映射页的内存/映射到用户空间的非文件页表大小
Mapped:映射文件内存
Shmem:已经被分配的共享内存
Slab:内核数据结构缓存
SReclaimable:可收回slab内存
SUnreclaim:不可收回slab内存
KernelStack:内核消耗的内存
PageTables:管理内存分页的索引表的大小
NFS_Unstable:不稳定页表的大小
Bounce:在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp:FUSE用于临时写回缓冲区的内存
CommitLimit:系统实际可分配内存
Committed_AS:系统当前已分配的内存
VmallocTotal:预留的虚拟内存总量
VmallocUsed:已经被使用的虚拟内存
VmallocChunk:可分配的最大的逻辑连续的虚拟内存
HardwareCorrupted:当系统检测到内存的硬件故障时删除掉的内存页的总量
AnonHugePages:匿名大页缓存
CmaTotal:连续可用内存总量
CmaFree:空闲连续可用内存
HugePages_Total:预留的大页内存总量
HugePages_Free:空闲的大页内存
HugePages_Rsvd:已经被应用程序分配但尚未使用的大页内存
HugePages_Surp:初始大页数与修改配置后大页数的差值
Hugepagesize:单个大页内存的大小
DirectMap4k:映射TLB为4kB的内存数量
DirectMap2M:映射TLB为2M的内存数量
DirectMap1G:映射TLB为1G的内存数量

6、cpuinfo目录
processor :系统中逻辑处理核的编号。对于单核处理器,则课认为是其CPU编号,对于多核处理器则可以是物理核、或者使用超线程技术虚拟的逻辑核
vendor_id :CPU制造商
cpu family :CPU产品系列代号
model   :CPU属于其系列中的哪一代的代号
model name:CPU属于的名字及其编号、标称主频
stepping  :CPU属于制作更新版本
cpu MHz  :CPU的实际使用主频
cache size :CPU二级缓存大小
physical id :单个CPU的标号
siblings :单个CPU逻辑物理核数
core id :当前物理核在其所处CPU中的编号,这个编号不一定连续
cpu cores :该逻辑核所处CPU的物理核数
apicid :用来区分不同逻辑核的编号,系统中每个逻辑核的此编号必然不同,此编号不一定连续
fpu :是否具有浮点运算单元(Floating Point Unit)
fpu_exception :是否支持浮点计算异常
cpuid level :执行cpuid指令前,eax寄存器中的值,根据不同的值cpuid指令会返回不同的内容
wp :表明当前CPU是否在内核态支持对用户空间的写保护(Write Protection)
flags :当前CPU支持的功能
bogomips :在系统内核启动时粗略测算的CPU速度(Million Instructions Per Second)
clflush size :每次刷新缓存的大小单位
cache_alignment :缓存地址对齐单位
address sizes :可访问地址空间位数
power management :对能源管理的支持,有以下几个可选支持功能:
  ts:  temperature sensor

fid:  frequency id control

vid:  voltage id control

ttp:  thermal trip

tm:

stc:

100mhzsteps:

hwpstate:

7、其他文件
/proc/apm,文件,apm即Advanced Power Management,需要配置CONFIG_APM。
/proc/buddyinfo,文件,用于诊断内存碎片问题。
/proc/cmdline,文件,系统启动时传递给Linux内核的参数,如lilo、grub等boot管理模块。
/proc/config.gz,文件,内核编译配置选项,需要配置CONFIG_IKCONFIG_PROC。
/proc/crypto,文件,内核加密API提供的加密列表。
/proc/devices,文件,设备相关信息。
/proc/diskstats,文件,磁盘状态。
/proc/dma,文件,dma即Direct Memory Access。
/proc/driver/rtc,文件,系统运行时配置。
/proc/execdomains,文件,执行域列表。
/proc/fb,文件,Frame Buffer信息,需要配置CONFIG_FB。
/proc/filesystems,文件,内核支持的文件系统类型(man filesystems)。
/proc/fs,目录,挂载的文件系统信息。
/proc/ide,目录,用于IDE接口。
/proc/interrupts,文件,每个CPU每个IO的中断信息。
/proc/iomem,文件,IO内存映射信息。
/proc/ioports,文件,IO端口信息。
/proc/kallsyms,文件,用于动态链接和和模块绑定的符号定义。
/proc/kcore,文件,系统中ELF格式的物理内存。
/proc/kmsg,文件,内核信息,dmsg命令使用这个文件。
/proc/kpagecount,文件,每个物理页帧映射的次数,需要配置CONFIG_PROC_PAGE_MONITOR。
/proc/kpageflags,文件,每个物理页帧的掩码,需要配置CONFIG_PROC_PAGE_MONITOR。
/proc/ksyms,文件,同kallsyms。
/proc/loadavg,文件,工作负荷。
/proc/locks,文件,当前文件锁的状态。
/proc/malloc,文件,需要配置CONFIG_DEBUG_MALLOC。
/proc/modules,文件,系统加载的模块信息,相关命令为lsmod。
/proc/mounts,文件,链接到了/self/mounts。
/proc/mtrr,文件,Memory Type Range Registers。
/proc/partitions,文件,分区信息。
/proc/pci,文件,PCI接口设备。
/proc/profile,文件,用于readprofile命令作性能分析。
/proc/scsi,目录,SCSI接口设备。
/proc/scsi/scsi
/proc/scsi/[drivername]
/proc/self,目录,链接到了当前进程所在的目录。
/proc/slabinfo,文件,内核缓存信息,需要配置CONFIG_SLAB。
/proc/stat,文件,系统信息统计。
/proc/swaps,文件,使用的交换空间。
/proc/sysrq-trigger,文件,可写,触发系统调用。
/proc/sysvipc,目录,包括msg、sem、shm三个文件,为System V IPC对象。
/proc/thread-self,文件,链接到了当前进程下的task目录中的线程文件。
/proc/timer_list,文件,还在运行着的定时器列表。
/proc/timer_stats,文件,定时器状态。
/proc/tty,目录,tty设备相关。
/proc/uptime,文件,系统更新时间和进程空闲时间。
/proc/version,文件,内核版本信息。
/proc/vmstat,文件,内存统计信息,以键值对形式显示。
/proc/zoneinfo,文件,内存区块信息,用于分析虚拟内存的行为。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值