一、 /proc文件系统
1.1 /proc: 一个虚拟文件系统
/proc 文件系统是一种内核和内核模块用来向进程(process) 发送信息的机制(所以叫做/proc)。
最初的设计目的是允许更方便的对进程信息进行访问, 现在它被内核使用, 如/proc/modules是模块的列表, /proc/meminfo 是内存使用的统计表。
Linux内核提供了一种通过 /proc文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。 以文件系统的方式为访问系统内核数据的操作提供接口。
由于系统的信息, 如进程是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
1.2 加载/proc
/proc 存在于内存之中而不是硬盘上。/proc 由内核控制,没有承载/proc的设备。
查看文件/proc/mounts(和mount命令一样列出所有已经加载的文件系统):
[root@centos78 ~]# grep proc /proc/mounts proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=36,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=14038 0 0
如果系统中没有加载 proc文件系统,可以通过如下命令加载proc文件系统:
[root@centos78 ~]# mount -t proc proc /proc
/proc 文件系统和其他常规的文件系统一样把自己注册到虚拟文件系统层(VFS)了。
然而直到当VFS调用它,请求文件、目录的i-node的时候,/proc文件系统才会根据内核中的信息建立相应的文件和目录。
当编辑程序试图打开一个虚拟文件时,这个文件就通过内核中的信息被凭空地(on the fly) 创建了。
[root@centos78 1021]# ls -i -l total 0 23827 dr-xr-xr-x. 2 root root 0 Feb 20 07:16 attr 23813 -rw-r--r--. 1 root root 0 Feb 20 07:16 autogroup 23809 -r--------. 1 root root 0 Feb 20 07:16 auxv
二、 /proc 内核信息
2.1 常用文件
self目录则是读取进程本身(shell)的信息接口,是一个link。
/proc/cmdline: 系统启动时输入的内核命令行参数 /proc/cpuinfo: CPU的信息(型号, 家族, 缓存大小等) /proc/devices: 可用设备的列表(块设备/字符设备) /proc/filesystems: 被支持的文件系统 /proc/loadavg: 系统的负载 /proc/meminfo: 物理内存、交换空间等的信息 /proc/modules: 已加载的模块,lsmod 查看 /proc/version: 内核版本 /proc/mounts -> self/mounts: 已加载的文件系统的列表
2.2 文件的写权限
大部分/proc 的文件是只读的。而实际上/proc 文件系统通过/proc 中可读写的文件提供了对内核的交互机制。
写这些文件可以改变内核的状态,/proc/sys 目录存放所有可读写的文件的目录,可以被用于改变内核行为。
/proc/sys/kernel: 目录包含非通用内核行为的信息。
/proc/sys/net: 目录中的文件用于修改机器/网络的网络属性。
[root@centos78 ~]# cat /proc/sys/kernel/domainname (none) [root@centos78 ~]# echo "kunking.com" > /proc/sys/kernel/domainname [root@centos78 ~]# cat /proc/sys/kernel/domainname kunking.com [root@centos78 ~]# cat /proc/sys/net/ipv4/ip_forward 0 [root@centos78 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward [root@centos78 ~]# cat /proc/sys/net/ipv4/ip_forward 1
2.3 运行中的进程的信息
在/proc中数字编号的子目录, 每个编号的目录对应一个进程id (PID)。子目录包含了进程的状态和环境信息的文件。
cmdline: 命令行参数 cwd: 当前工作目录的链接 environ: 环境变量值 exe: 指向该进程的执行命令文件 fd: 包含进程所有文件描述符的目录 maps: 内存映像 mem: 进程的内存使用情况 stat: 进程状态 status: 进程当前状态, 以可读方式显示 statm: 进程内存状态信息 root: 链接到进程的root目录
2.4 不常用文件
/proc/acpi /proc/buddyinfo /proc/bus /proc/cgroups /proc/consoles /proc/crypto /proc/diskstats /proc/dma: 驱动程序使用的DMA通道和驱动程序名称 /proc/driver /proc/execdomains /proc/fb: /proc/fs /proc/interrupts: 中断的使用信息 /proc/iomem /proc/ioports: 磁盘驱动器、网卡、声卡等设备驱动程序I/O端口信息 /proc/irq /proc/kallsyms /proc/kcore: 物理内存以core文件格式保存的文件。gdb查看内核数据结构。二进制格式。 /proc/keys /proc/key-users /proc/kmsg: 内核消息, 使用dmesg检索这些信息。 /proc/kpagecount /proc/kpageflags /proc/locks: 内核锁, 在打开的文件上的加锁信息 /proc/mdstat: 由md设备驱动程序控制的RAID设备信息。 /proc/misc: 内核函数misc_register 登记的设备驱动程序 /proc/mpt /proc/mtrr /proc/net -> self/net /proc/pagetypeinfo /proc/partitions: 系统识别的分区表 /proc/sched_debug /proc/schedstat /proc/scsi: 包含所有检测到的SCSI设备的文件, 每种控制器驱动程序一个目录 /proc/self -> 1546 /proc/slabinfo: Slab池信息 /proc/softirqs /proc/stat: 全面统计状态表,CPU利用率、磁盘、内存页、内存交换、中断等信息 /proc/swaps: 交换空间的使用情况 /proc/sys: 调整系统的性能, 包括abi/crypto/debu/dev/fs/kernel/net/user/vm /proc/sysrq-trigger /proc/sysvipc /proc/timer_list /proc/timer_stats /proc/tty /proc/uptime: 系统正常运行时间 /proc/vmallocinfo /proc/vmstat /proc/zoneinfo
2.5 /proc/net 信息
/proc/net/anycast6 /proc/net/arp: 转储每个网络接口的arp表中dev 包的统计 /proc/net/connector /proc/net/dev: 来自网络设备的统计 /proc/net/dev_mcast: 列出二层(数据链路层)多播组 /proc/net/dev_snmp6 /proc/net/fib_trie /proc/net/fib_triestat /proc/net/hci /proc/net/icmp /proc/net/if_inet6 /proc/net/igmp: 加入的IGMP多播组 /proc/net/igmp6 /proc/net/ip6_flowlabel /proc/net/ip6_mr_cache /proc/net/ip6_mr_vif /proc/net/ip6_tables_matches /proc/net/ip6_tables_names /proc/net/ip6_tables_targets /proc/net/ip_mr_cache /proc/net/ip_mr_vif /proc/net/ip_tables_matches /proc/net/ip_tables_names /proc/net/ip_tables_targets /proc/net/ipv6_route /proc/net/l2cap /proc/net/mcfilter /proc/net/mcfilter6 /proc/net/netfilter /proc/net/netlink: netlink 套接口的信息 /proc/net/netstat: 网络流量的多种统计。 /proc/net/nf_conntrack /proc/net/nf_conntrack_expect /proc/net/packet /proc/net/protocols /proc/net/psched /proc/net/ptype /proc/net/raw: 原始套接字的套接字列表 /proc/net/raw6 /proc/net/route: 静态路由表 /proc/net/rt6_stats /proc/net/rt_acct /proc/net/rt_cache /proc/net/sco /proc/net/snmp: snmp agent的ip/icmp/tcp/udp协议统计 /proc/net/snmp6 /proc/net/sockstat: 列出使用的tcp/udp/raw/pac/syc_cookies的数量 /proc/net/sockstat6 /proc/net/softnet_stat /proc/net/stat /proc/net/tcp: TCP 连接的套接字 /proc/net/tcp6 /proc/net/udp: UDP 连接的套接字 /proc/net/udp6 /proc/net/udplite /proc/net/udplite6 /proc/net/unix: UNIX 域套接字列表 /proc/net/wireless /proc/net/xfrm_stat
标签:proc,文件系统,sys,内核,Linux,net,root From: https://www.cnblogs.com/kingdomer/p/9452236.html