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总用量 0dr-xr-xr-x. 2 root root 0 11月 12 11:41 inputdr-xr-xr-x. 4 root root 0 11月 12 11:41 pci[root@localhost proc]# ll /proc/bus/input总用量 0-r--r--r--. 1 root root 0 11月 12 11:42 devices-r--r--r--. 1 root root 0 11月 12 11:42 handlers[root@localhost proc]# ll /proc/bus/pci总用量 0dr-xr-xr-x. 2 root root 0 11月 12 11:42 00dr-xr-xr-x. 2 root root 0 11月 12 11:42 02-r--r--r--. 1 root root 0 11月 12 11:42 devices
(2)/proc/driver
驱动信息,目录内容如下:
[root@localhost proc]# ll /proc/driver总用量 0-r--r--r--. 1 root root 0 11月 12 11:43 nvram-r--r--r--. 1 root root 0 11月 12 11:43 rtc
(3)/proc/fs
文件系统信息,目录内容如下:
[root@localhost proc]# ll /proc/fs总用量 0dr-xr-xr-x. 2 root root 0 11月 12 11:45 nfsddr-xr-xr-x. 2 root root 0 11月 12 11:45 xfs[root@localhost proc]# ll /proc/fs/nfsd总用量 0[root@localhost proc]# ll /proc/fs/xfs总用量 0lrwxrwxrwx. 1 root root 23 11月 12 11:45 stat -> /sys/fs/xfs/stats/stats-r--r--r--. 1 root root 0 11月 12 11:45 xqm-r--r--r--. 1 root root 0 11月 12 11:45 xqmstat
(4)设备信息
# 网卡设备信息[root@localhost proc]# ll /proc/netlrwxrwxrwx. 1 root root 8 11月 12 11:47 /proc/net -> self/net# 网络流量统计。接收、发送、发送时的错误和冲突情况。[root@localhost proc]# cat /proc/net/devInter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressedlo: 18632 212 0 0 0 0 0 0 18632 212 0 0 0 0 0 0ens33: 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 11月 12 11:48 device_infodr-xr-xr-x. 2 root root 0 11月 12 11:48 mptspi-r--r--r--. 1 root root 0 11月 12 11:48 scsidr-xr-xr-x. 2 root root 0 11月 12 11:48 sg#tty设备信息[root@localhost proc]# ll /proc/tty 总用量 0dr-x------. 2 root root 0 11月 12 11:48 driver-r--r--r--. 1 root root 0 11月 12 11:48 driversdr-xr-xr-x. 2 root root 0 11月 12 11:48 ldisc-r--r--r--. 1 root root 0 11月 12 11:48 ldiscs
(5)进程目录
/proc 目录下有很多以数字命名的目录,这些目录与进程的 pid 相对应。通过这些目录,可以查看进程相关的信息。比如,mysql 对应的进程号为 25787:
[root@localhost proc]# ps -ef |grep mysqlmysql 25787 1 0 11月09 ? 00:02:27 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pidroot 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总用量 0dr-xr-xr-x. 2 mysql mysql 0 11月 12 12:02 attr-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 autogroup-r--------. 1 mysql mysql 0 11月 12 12:02 auxv-r--r--r--. 1 mysql mysql 0 11月 12 12:02 cgroup--w-------. 1 mysql mysql 0 11月 12 12:02 clear_refs-r--r--r--. 1 mysql mysql 0 11月 12 12:00 cmdline-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 comm-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 coredump_filter-r--r--r--. 1 mysql mysql 0 11月 12 12:02 cpusetlrwxrwxrwx. 1 mysql mysql 0 11月 12 12:02 cwd -> /var/lib/mysql-r--------. 1 mysql mysql 0 11月 12 12:02 environlrwxrwxrwx. 1 mysql mysql 0 11月 12 12:02 exe -> /usr/sbin/mysqlddr-x------. 2 mysql mysql 0 11月 12 12:02 fddr-x------. 2 mysql mysql 0 11月 12 12:02 fdinfo-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 gid_map-r--------. 1 mysql mysql 0 11月 12 12:02 io-r--r--r--. 1 mysql mysql 0 11月 12 12:02 limits-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 loginuiddr-x------. 2 mysql mysql 0 11月 12 12:02 map_files-r--r--r--. 1 mysql mysql 0 11月 12 12:02 maps-rw-------. 1 mysql mysql 0 11月 12 12:02 mem-r--r--r--. 1 mysql mysql 0 11月 12 12:02 mountinfo-r--r--r--. 1 mysql mysql 0 11月 12 12:02 mounts-r--------. 1 mysql mysql 0 11月 12 12:02 mountstatsdr-xr-xr-x. 5 mysql mysql 0 11月 12 12:02 netdr-x--x--x. 2 mysql mysql 0 11月 12 12:02 ns-r--r--r--. 1 mysql mysql 0 11月 12 12:02 numa_maps-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 oom_adj-r--r--r--. 1 mysql mysql 0 11月 12 12:02 oom_score-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 oom_score_adj-r--r--r--. 1 mysql mysql 0 11月 12 12:02 pagemap-r--r--r--. 1 mysql mysql 0 11月 12 12:02 personality-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 projid_maplrwxrwxrwx. 1 mysql mysql 0 11月 12 12:02 root -> /-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 sched-r--r--r--. 1 mysql mysql 0 11月 12 12:02 schedstat-r--r--r--. 1 mysql mysql 0 11月 12 12:02 sessionid-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 setgroups-r--r--r--. 1 mysql mysql 0 11月 12 12:02 smaps-r--r--r--. 1 mysql mysql 0 11月 12 12:02 stack-r--r--r--. 1 mysql mysql 0 10月 31 19:53 stat-r--r--r--. 1 mysql mysql 0 11月 12 12:02 statm-r--r--r--. 1 mysql mysql 0 11月 12 12:00 status-r--r--r--. 1 mysql mysql 0 11月 12 12:02 syscalldr-xr-xr-x. 30 mysql mysql 0 11月 12 12:02 task-r--r--r--. 1 mysql mysql 0 11月 12 12:02 timers-rw-r--r--. 1 mysql mysql 0 11月 12 12:02 uid_map-r--r--r--. 1 mysql mysql 0 11月 12 12:02 wchan
进程目录下的子目录与文件的含义如下:
cmdline # 保存了当前进程的启动命令。[root@localhost 25787]# cat cmdline/usr/sbin/mysqld--daemonize--pid-file=/var/run/mysqld/mysqld.pidcwd # 链接到进程当前工作目录lrwxrwxrwx. 1 mysql mysql 0 11月 12 12:02 cwd -> /var/lib/mysqlexe # 指向启动进程的可执行文件lrwxrwxrwx. 1 mysql mysql 0 11月 12 12:02 exe -> /usr/sbin/mysqldenviron #包含与进程相关的环境变量[root@localhost 25787]# cat environLANG=zh_CN.UTF-8PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binHOME=/var/lib/mysqlLOGNAME=mysqlUSER=mysqlSHELL=/bin/falsefd # fd目录包含了进程打开的每一个文件的文件描述符。这些描述符都指向实际文件。[root@localhost 25787]# ll ./fd总用量 0lr-x------. 1 mysql mysql 64 11月 12 12:07 0 -> /dev/nulll-wx------. 1 mysql mysql 64 11月 12 12:07 1 -> /var/log/mysqld.loglrwx------. 1 mysql mysql 64 11月 12 12:07 10 -> /var/lib/mysql/ibdata1lrwx------. 1 mysql mysql 64 11月 12 12:07 11 -> /var/lib/mysql/ibtmp1lrwx------. 1 mysql mysql 64 11月 12 12:07 12 -> /tmp/ibbdwaLR (deleted)lrwx------. 1 mysql mysql 64 11月 12 12:07 13 -> /var/lib/mysql/mysql/servers.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 14 -> /var/lib/mysql/mysql/help_topic.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 15 -> /var/lib/mysql/mysql/help_relation.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 16 -> /var/lib/mysql/mysql/help_keyword.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 17 -> /var/lib/mysql/mysql/time_zone_name.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 18 -> /var/lib/mysql/mysql/time_zone.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 19 -> /var/lib/mysql/mysql/time_zone_transition.ibdl-wx------. 1 mysql mysql 64 11月 12 12:07 2 -> /var/log/mysqld.loglrwx------. 1 mysql mysql 64 11月 12 12:07 20 -> /var/lib/mysql/mysql/time_zone_transition_type.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 21 -> /var/lib/mysql/mysql/time_zone_leap_second.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 22 -> /var/lib/mysql/mysql/server_cost.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 23 -> /var/lib/mysql/mysql/engine_cost.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 24 -> /var/lib/mysql/sys/sys_config.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 25 -> /var/lib/mysql/mydb/t11.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 26 -> /var/lib/mysql/mysql/plugin.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 27 -> /var/lib/mysql/mysql/innodb_table_stats.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 28 -> /var/lib/mysql/mysql/innodb_index_stats.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 29 -> /var/lib/mysql/mysql/gtid_executed.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 3 -> /var/lib/mysql/ib_logfile0lr-x------. 1 mysql mysql 64 11月 12 12:07 30 -> /dev/urandomlrwx------. 1 mysql mysql 64 11月 12 12:07 31 -> socket:[65067]lrwx------. 1 mysql mysql 64 11月 12 12:07 32 -> socket:[65068]lrwx------. 1 mysql mysql 64 11月 12 12:07 33 -> /var/lib/mysql/mysql/user.MYIlrwx------. 1 mysql mysql 64 11月 12 12:07 34 -> /var/lib/mysql/mysql/user.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 35 -> /var/lib/mysql/mysql/db.MYIlrwx------. 1 mysql mysql 64 11月 12 12:07 36 -> /var/lib/mysql/mysql/db.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 37 -> /var/lib/mysql/mysql/proxies_priv.MYIlrwx------. 1 mysql mysql 64 11月 12 12:07 38 -> /var/lib/mysql/mysql/proxies_priv.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 39 -> /var/lib/mysql/mysql/tables_priv.MYIlrwx------. 1 mysql mysql 64 11月 12 12:07 40 -> /var/lib/mysql/mysql/tables_priv.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 41 -> /var/lib/mysql/mysql/columns_priv.MYIlrwx------. 1 mysql mysql 64 11月 12 12:07 42 -> /var/lib/mysql/mysql/columns_priv.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 43 -> /var/lib/mysql/mysql/procs_priv.MYIlrwx------. 1 mysql mysql 64 11月 12 12:07 44 -> /var/lib/mysql/mysql/procs_priv.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 45 -> /var/lib/mysql/mysql/event.MYIlrwx------. 1 mysql mysql 64 11月 12 12:07 46 -> /var/lib/mysql/mysql/event.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 47 -> /var/lib/mysql/mysql/proc.MYIlrwx------. 1 mysql mysql 64 11月 12 12:07 48 -> /var/lib/mysql/mysql/proc.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 49 -> /var/lib/mysql/mysql/event.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 5 -> /tmp/ibFDWuzF (deleted)lrwx------. 1 mysql mysql 64 11月 12 12:07 50 -> /var/lib/mysql/mysql/event.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 51 -> /var/lib/mysql/mysql/event.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 52 -> /var/lib/mysql/dzh/tb_department.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 53 -> /var/lib/mysql/dzh/tb_large_group.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 54 -> /var/lib/mysql/dzh/tb_team.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 55 -> /var/lib/mysql/dzh/tb_employee.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 56 -> /var/lib/mysql/dzh/tb_competing_goods_classification.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 57 -> /var/lib/mysql/dzh/tb_competing_goods.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 58 -> /var/lib/mysql/dzh/tb_brand.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 59 -> /var/lib/mysql/dzh/tb_product.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 6 -> /tmp/ibsmaK4i (deleted)lrwx------. 1 mysql mysql 64 11月 12 12:07 60 -> /var/lib/mysql/dzh/tb_goods.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 61 -> /var/lib/mysql/dzh/tb_packaged.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 62 -> /var/lib/mysql/dzh/tb_product_packaged_relation.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 63 -> /var/lib/mysql/dzh/tb_platform.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 64 -> /var/lib/mysql/dzh/tb_store.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 65 -> /var/lib/mysql/mysql/proc.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 66 -> /var/lib/mysql/mysql/proc.MYDlrwx------. 1 mysql mysql 64 11月 12 12:07 67 -> /var/lib/mysql/dzh/tb_goods_sales_info.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 68 -> /var/lib/mysql/dzh/tb_packaged_sales_info.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 69 -> /var/lib/mysql/dzh_example/goods.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 7 -> /tmp/ibBGQ0zW (deleted)lrwx------. 1 mysql mysql 64 11月 12 12:07 70 -> /var/lib/mysql/dzh_example/team.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 71 -> /var/lib/mysql/dzh_example/product.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 72 -> /var/lib/mysql/dzh_example/goods_product.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 73 -> /var/lib/mysql/dzh_example/not_package_sales.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 74 -> /var/lib/mysql/dzh_example/package_sales.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 75 -> /var/lib/mysql/dzh_example/package_product_sales.ibdlrwx------. 1 mysql mysql 64 11月 12 12:07 8 -> /tmp/ib4oxxSd (deleted)lrwx------. 1 mysql mysql 64 11月 12 12:07 9 -> /var/lib/mysql/ib_logfile1task # task目录下包含了当前进程的每一个线程的相关信息,与进程运行时的相关文件一样。[root@localhost 25787]# ll ./task总用量 0dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25787dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25788dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25789dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25790dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25791dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25792dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25793dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25794dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25795dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25796dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25797dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25798dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25799dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25801dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25802dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25803dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25804dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25805dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25806dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25807dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25808dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25809dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25810dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25811dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25812dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25813dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25814dr-xr-xr-x. 6 mysql mysql 0 11月 12 12:09 25816limits # 保存了进程使用资源的限制信息,软限制、硬限制及单位。[root@localhost 25787]# cat limitsLimit 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
来源地址:https://blog.csdn.net/weixin_44377973/article/details/127818660