Linux 下的 /proc 目录介绍

Posted 睿思达DBA_WGX

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 下的 /proc 目录介绍相关的知识,希望对你有一定的参考价值。

Linux 下的 /proc 目录介绍

目录

在 Linux 系统中,/proc 目录是一个位于内存中的伪文件系统。该目录下保存的并不是真正的文件和目录,而是一些【运行时】的信息,如 CPU 信息、负载信息、系统内存信息、磁盘 IO 信息等。

Linux 内核提供了一种通过 proc 文件系统,在运行时访问内核内部的数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。通过ll -h 命令查看该目录下的文件,发现几乎所有的文件大小都是 0。但可以通过 vim、cat、less、more 等命令查看文件的内容。

/proc目录是内核提供给我们的查询中心,通过查询该目录下的文件内容,可以获取到有关系统硬件及当前运行进程的信息。

用户和应用程序可以通过 proc 得到系统的信息,并可以改变内核的某些参数。由于进程等系统信息是动态改变的,所以用户或应用程序读取 proc 文件时,proc 文件系统是动态从系统内核读出所需信息并提交的。

/proc 目录下的文件或子目录取决于系统的内核配置和装载的模块。其中 sys 目录是可写的,可以通过它来访问或修改内核参数;而 net 和 scsi 则依赖于内核配置。如果系统不支持 scsi,则 scsi 目录不存在。还有一些以数字命名的目录,它们是进程目录。当前运行的每一个进程都有对应的一个目录在 /proc 下,以进程的 PID 号为目录名,它们是读取进程信息的接口。self 目录则是读取进程本身的信息接口,是一个link。

/proc 目录的内容如下图所示:

1、/proc 目录包含的文件及其作用

/proc/cmdline         # 保存操作系统的启动参数
/proc/cpuinfo         # 保存CPU的相关信息。对应lscpu命令。
/proc/devices         # 系统已经加载的所有块设备和字符设备的信息。
/proc/diskstats       # 统计磁盘设备的I/O信息。
/proc/filesystems     # 保存当前系统支持的文件系统。
/proc/kcore	          # 物理内存的镜像。该文件大小是已使用的物理内存加上4K。
/proc/loadavg	      # 保存最近1分钟、5分钟、15分钟的系统平均负载。
/proc/meminfo	      # 保存当前内存使用情况。对应free命令
/proc/mounts -> self/mounts	# 系统中当前挂载的所有文件系统。mount命令。
                            # mounts文件是链接到self/mounts。
/proc/partitions      # 每个分区的主设备号(major)、次设备号(minor)、包含的块(block)数目。
/proc/uptime          # 系统自上次启动后的运行时间。
/proc/version         # 当前系统的内核版本号
/proc/vmstat          # 当前系统虚拟内存的统计数据

2、/proc 目录包含的子目录及其内容

(1)/proc/bus

系统总线(Bus)信息,例如 pci、usb 等,目录内容如下:

[root@localhost proc]# ll /proc/bus
总用量 0
dr-xr-xr-x. 2 root root 0 1112 11:41 input
dr-xr-xr-x. 4 root root 0 1112 11:41 pci
[root@localhost proc]# ll /proc/bus/input
总用量 0
-r--r--r--. 1 root root 0 1112 11:42 devices
-r--r--r--. 1 root root 0 1112 11:42 handlers
[root@localhost proc]# ll /proc/bus/pci
总用量 0
dr-xr-xr-x. 2 root root 0 1112 11:42 00
dr-xr-xr-x. 2 root root 0 1112 11:42 02
-r--r--r--. 1 root root 0 1112 11:42 devices

(2)/proc/driver

驱动信息,目录内容如下:

[root@localhost proc]# ll /proc/driver
总用量 0
-r--r--r--. 1 root root 0 1112 11:43 nvram
-r--r--r--. 1 root root 0 1112 11:43 rtc

(3)/proc/fs

文件系统信息,目录内容如下:

[root@localhost proc]# ll /proc/fs
总用量 0
dr-xr-xr-x. 2 root root 0 1112 11:45 nfsd
dr-xr-xr-x. 2 root root 0 1112 11:45 xfs
[root@localhost proc]# ll /proc/fs/nfsd
总用量 0
[root@localhost proc]# ll /proc/fs/xfs
总用量 0
lrwxrwxrwx. 1 root root 23 1112 11:45 stat -> /sys/fs/xfs/stats/stats
-r--r--r--. 1 root root  0 1112 11:45 xqm
-r--r--r--. 1 root root  0 1112 11:45 xqmstat

(4)设备信息

# 网卡设备信息
[root@localhost proc]# ll /proc/net
lrwxrwxrwx. 1 root root 8 1112 11:47 /proc/net -> self/net
# 网络流量统计。接收、发送、发送时的错误和冲突情况。
[root@localhost proc]# cat /proc/net/dev
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
lo:   18632     212    0    0    0     0          0         0    18632     212    0    0    0     0       0          0
ens33: 266978316  271249    0    0    0     0          0         0  7110723   75371    0    0    0     0       0          0
# scsi设备信息
[root@localhost proc]# ll /proc/scsi
总用量 0
-r--r--r--. 1 root root 0 1112 11:48 device_info
dr-xr-xr-x. 2 root root 0 1112 11:48 mptspi
-r--r--r--. 1 root root 0 1112 11:48 scsi
dr-xr-xr-x. 2 root root 0 1112 11:48 sg
#tty设备信息
[root@localhost proc]# ll /proc/tty 
总用量 0
dr-x------. 2 root root 0 1112 11:48 driver
-r--r--r--. 1 root root 0 1112 11:48 drivers
dr-xr-xr-x. 2 root root 0 1112 11:48 ldisc
-r--r--r--. 1 root root 0 1112 11:48 ldiscs

(5)进程目录

/proc 目录下有很多以数字命名的目录,这些目录与进程的 pid 相对应。通过这些目录,可以查看进程相关的信息。比如,mysql 对应的进程号为 25787:

[root@localhost proc]# ps -ef |grep mysql
mysql     25787      1  0 11月09 ?      00:02:27 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
root      27552  26884  0 12:00 pts/0    00:00:00 grep --color=auto mysql

进程号为 25787 对应的目录内容如下:

[root@localhost proc]# cd 25787
[root@localhost 25787]# pwd
/proc/25787
[root@localhost 25787]# ll
总用量 0
dr-xr-xr-x.  2 mysql mysql 0 1112 12:02 attr
-rw-r--r--.  1 mysql mysql 0 1112 12:02 autogroup
-r--------.  1 mysql mysql 0 1112 12:02 auxv
-r--r--r--.  1 mysql mysql 0 1112 12:02 cgroup
--w-------.  1 mysql mysql 0 1112 12:02 clear_refs
-r--r--r--.  1 mysql mysql 0 1112 12:00 cmdline
-rw-r--r--.  1 mysql mysql 0 1112 12:02 comm
-rw-r--r--.  1 mysql mysql 0 1112 12:02 coredump_filter
-r--r--r--.  1 mysql mysql 0 1112 12:02 cpuset
lrwxrwxrwx.  1 mysql mysql 0 1112 12:02 cwd -> /var/lib/mysql
-r--------.  1 mysql mysql 0 1112 12:02 environ
lrwxrwxrwx.  1 mysql mysql 0 1112 12:02 exe -> /usr/sbin/mysqld
dr-x------.  2 mysql mysql 0 1112 12:02 fd
dr-x------.  2 mysql mysql 0 1112 12:02 fdinfo
-rw-r--r--.  1 mysql mysql 0 1112 12:02 gid_map
-r--------.  1 mysql mysql 0 1112 12:02 io
-r--r--r--.  1 mysql mysql 0 1112 12:02 limits
-rw-r--r--.  1 mysql mysql 0 1112 12:02 loginuid
dr-x------.  2 mysql mysql 0 1112 12:02 map_files
-r--r--r--.  1 mysql mysql 0 1112 12:02 maps
-rw-------.  1 mysql mysql 0 1112 12:02 mem
-r--r--r--.  1 mysql mysql 0 1112 12:02 mountinfo
-r--r--r--.  1 mysql mysql 0 1112 12:02 mounts
-r--------.  1 mysql mysql 0 1112 12:02 mountstats
dr-xr-xr-x.  5 mysql mysql 0 1112 12:02 net
dr-x--x--x.  2 mysql mysql 0 1112 12:02 ns
-r--r--r--.  1 mysql mysql 0 1112 12:02 numa_maps
-rw-r--r--.  1 mysql mysql 0 1112 12:02 oom_adj
-r--r--r--.  1 mysql mysql 0 1112 12:02 oom_score
-rw-r--r--.  1 mysql mysql 0 1112 12:02 oom_score_adj
-r--r--r--.  1 mysql mysql 0 1112 12:02 pagemap
-r--r--r--.  1 mysql mysql 0 1112 12:02 personality
-rw-r--r--.  1 mysql mysql 0 1112 12:02 projid_map
lrwxrwxrwx.  1 mysql mysql 0 1112 12:02 root -> /
-rw-r--r--.  1 mysql mysql 0 1112 12:02 sched
-r--r--r--.  1 mysql mysql 0 1112 12:02 schedstat
-r--r--r--.  1 mysql mysql 0 1112 12:02 sessionid
-rw-r--r--.  1 mysql mysql 0 1112 12:02 setgroups
-r--r--r--.  1 mysql mysql 0 1112 12:02 smaps
-r--r--r--.  1 mysql mysql 0 1112 12:02 stack
-r--r--r--.  1 mysql mysql 0 1031 19:53 stat
-r--r--r--.  1 mysql mysql 0 1112 12:02 statm
-r--r--r--.  1 mysql mysql 0 1112 12:00 status
-r--r--r--.  1 mysql mysql 0 1112 12:02 syscall
dr-xr-xr-x. 30 mysql mysql 0 1112 12:02 task
-r--r--r--.  1 mysql mysql 0 1112 12:02 timers
-rw-r--r--.  1 mysql mysql 0 1112 12:02 uid_map
-r--r--r--.  1 mysql mysql 0 1112 12:02 wchan

进程目录下的子目录与文件的含义如下:

cmdline  # 保存了当前进程的启动命令。
[root@localhost 25787]# cat cmdline
/usr/sbin/mysqld--daemonize--pid-file=/var/run/mysqld/mysqld.pid

cwd     # 链接到进程当前工作目录
lrwxrwxrwx.  1 mysql mysql 0 1112 12:02 cwd -> /var/lib/mysql

exe     # 指向启动进程的可执行文件
lrwxrwxrwx.  1 mysql mysql 0 1112 12:02 exe -> /usr/sbin/mysqld

environ  #包含与进程相关的环境变量
[root@localhost 25787]# cat environ
LANG=zh_CN.UTF-8PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binHOME=/var/lib/mysqlLOGNAME=mysqlUSER=mysqlSHELL=/bin/false

fd    # fd目录包含了进程打开的每一个文件的文件描述符。这些描述符都指向实际文件。
[root@localhost 25787]# ll ./fd
总用量 0
lr-x------. 1 mysql mysql 64 1112 12:07 0 -> /dev/null
l-wx------. 1 mysql mysql 64 1112 12:07 1 -> /var/log/mysqld.log
lrwx------. 1 mysql mysql 64 1112 12:07 10 -> /var/lib/mysql/ibdata1
lrwx------. 1 mysql mysql 64 1112 12:07 11 -> /var/lib/mysql/ibtmp1
lrwx------. 1 mysql mysql 64 1112 12:07 12 -> /tmp/ibbdwaLR (deleted)
lrwx------. 1 mysql mysql 64 1112 12:07 13 -> /var/lib/mysql/mysql/servers.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 14 -> /var/lib/mysql/mysql/help_topic.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 15 -> /var/lib/mysql/mysql/help_relation.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 16 -> /var/lib/mysql/mysql/help_keyword.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 17 -> /var/lib/mysql/mysql/time_zone_name.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 18 -> /var/lib/mysql/mysql/time_zone.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 19 -> /var/lib/mysql/mysql/time_zone_transition.ibd
l-wx------. 1 mysql mysql 64 1112 12:07 2 -> /var/log/mysqld.log
lrwx------. 1 mysql mysql 64 1112 12:07 20 -> /var/lib/mysql/mysql/time_zone_transition_type.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 21 -> /var/lib/mysql/mysql/time_zone_leap_second.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 22 -> /var/lib/mysql/mysql/server_cost.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 23 -> /var/lib/mysql/mysql/engine_cost.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 24 -> /var/lib/mysql/sys/sys_config.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 25 -> /var/lib/mysql/mydb/t11.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 26 -> /var/lib/mysql/mysql/plugin.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 27 -> /var/lib/mysql/mysql/innodb_table_stats.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 28 -> /var/lib/mysql/mysql/innodb_index_stats.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 29 -> /var/lib/mysql/mysql/gtid_executed.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 3 -> /var/lib/mysql/ib_logfile0
lr-x------. 1 mysql mysql 64 1112 12:07 30 -> /dev/urandom
lrwx------. 1 mysql mysql 64 1112 12:07 31 -> socket:[65067]
lrwx------. 1 mysql mysql 64 1112 12:07 32 -> socket:[65068]
lrwx------. 1 mysql mysql 64 1112 12:07 33 -> /var/lib/mysql/mysql/user.MYI
lrwx------. 1 mysql mysql 64 1112 12:07 34 -> /var/lib/mysql/mysql/user.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 35 -> /var/lib/mysql/mysql/db.MYI
lrwx------. 1 mysql mysql 64 1112 12:07 36 -> /var/lib/mysql/mysql/db.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 37 -> /var/lib/mysql/mysql/proxies_priv.MYI
lrwx------. 1 mysql mysql 64 1112 12:07 38 -> /var/lib/mysql/mysql/proxies_priv.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 39 -> /var/lib/mysql/mysql/tables_priv.MYI
lrwx------. 1 mysql mysql 64 1112 12:07 40 -> /var/lib/mysql/mysql/tables_priv.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 41 -> /var/lib/mysql/mysql/columns_priv.MYI
lrwx------. 1 mysql mysql 64 1112 12:07 42 -> /var/lib/mysql/mysql/columns_priv.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 43 -> /var/lib/mysql/mysql/procs_priv.MYI
lrwx------. 1 mysql mysql 64 1112 12:07 44 -> /var/lib/mysql/mysql/procs_priv.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 45 -> /var/lib/mysql/mysql/event.MYI
lrwx------. 1 mysql mysql 64 1112 12:07 46 -> /var/lib/mysql/mysql/event.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 47 -> /var/lib/mysql/mysql/proc.MYI
lrwx------. 1 mysql mysql 64 1112 12:07 48 -> /var/lib/mysql/mysql/proc.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 49 -> /var/lib/mysql/mysql/event.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 5 -> /tmp/ibFDWuzF (deleted)
lrwx------. 1 mysql mysql 64 1112 12:07 50 -> /var/lib/mysql/mysql/event.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 51 -> /var/lib/mysql/mysql/event.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 52 -> /var/lib/mysql/dzh/tb_department.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 53 -> /var/lib/mysql/dzh/tb_large_group.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 54 -> /var/lib/mysql/dzh/tb_team.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 55 -> /var/lib/mysql/dzh/tb_employee.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 56 -> /var/lib/mysql/dzh/tb_competing_goods_classification.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 57 -> /var/lib/mysql/dzh/tb_competing_goods.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 58 -> /var/lib/mysql/dzh/tb_brand.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 59 -> /var/lib/mysql/dzh/tb_product.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 6 -> /tmp/ibsmaK4i (deleted)
lrwx------. 1 mysql mysql 64 1112 12:07 60 -> /var/lib/mysql/dzh/tb_goods.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 61 -> /var/lib/mysql/dzh/tb_packaged.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 62 -> /var/lib/mysql/dzh/tb_product_packaged_relation.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 63 -> /var/lib/mysql/dzh/tb_platform.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 64 -> /var/lib/mysql/dzh/tb_store.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 65 -> /var/lib/mysql/mysql/proc.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 66 -> /var/lib/mysql/mysql/proc.MYD
lrwx------. 1 mysql mysql 64 1112 12:07 67 -> /var/lib/mysql/dzh/tb_goods_sales_info.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 68 -> /var/lib/mysql/dzh/tb_packaged_sales_info.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 69 -> /var/lib/mysql/dzh_example/goods.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 7 -> /tmp/ibBGQ0zW (deleted)
lrwx------. 1 mysql mysql 64 1112 12:07 70 -> /var/lib/mysql/dzh_example/team.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 71 -> /var/lib/mysql/dzh_example/product.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 72 -> /var/lib/mysql/dzh_example/goods_product.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 73 -> /var/lib/mysql/dzh_example/not_package_sales.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 74 -> /var/lib/mysql/dzh_example/package_sales.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 75 -> /var/lib/mysql/dzh_example/package_product_sales.ibd
lrwx------. 1 mysql mysql 64 1112 12:07 8 -> /tmp/ib4oxxSd (deleted)
lrwx------. 1 mysql mysql 64 1112 12:07 9 -> /var/lib/mysql/ib_logfile1

task   # task目录下包含了当前进程的每一个线程的相关信息,与进程运行时的相关文件一样。
[root@localhost 25787]# ll ./task
总用量 0
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25787
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25788
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25789
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25790
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25791
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25792
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25793
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25794
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25795
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25796
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25797
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25798
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25799
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25801
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25802
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25803
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25804
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25805
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25806
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25807
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25808
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25809
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25810
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25811
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25812
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25813
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25814
dr-xr-xr-x. 6 mysql mysql 0 1112 12:09 25816

limits  # 保存了进程使用资源的限制信息,软限制、硬限制及单位。
[root@localhost 25787]# 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             7208                 7208                 processes 
Max open files            5000                 5000                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       7208                 7208                 signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        

linux下的/proc目录简介

Refer:

https://blog.spoock.com/2019/10/08/proc/

https://www.hi-linux.com/posts/64295.html

以上是关于Linux 下的 /proc 目录介绍的主要内容,如果未能解决你的问题,请参考以下文章

linux系统下的/proc目录介绍

Linux下的/proc目录介绍(转)

linux下的/proc目录简介

linux之目录知识

详解linux系统下/proc文件夹目录

性能分析 | Linux 内存占用分析