Linux /proc目录简介

1.简单了解

以文件系统的方式为访问系统内核数据的操作提供接口

由linux内核提供:通过/proc文件系统,在运行时访问内核内部数据结构、改变内核设置的一种机制

proc文件系统是一个虚拟文件系统,只存在于内存当中,而不占用外存空间。

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

2.proc下面的文件或子文件夹

proc下面的文件或文件夹取决于内核配置和装载的模块。比较重要的三个目录如下:

sys:可写,通过它来访问或修改内核参数

net与scsi:依赖于内核配置,若系统不支持scsi,则scsi目录不存在

还有一些以数字命名的目录,属于进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的PID号为目录号,他们是读取进程信息的接口。

self目录就是读取进程本身的信息接口,是一个link,你可以去/proc目录下看一下,你会发现self软链的进程pid会变动。说明当前正在获取此pid的信息。

# ll self
lrwxrwxrwx 1 root root 0 8月 23 09:55 self -> 18728/
# ll self
lrwxrwxrwx 1 root root 0 8月 23 09:55 self -> 18729/
# ll self
lrwxrwxrwx 1 root root 0 8月 23 09:55 self -> 18730/
# ll self
lrwxrwxrwx 1 root root 0 8月 23 09:55 self -> 18731/

再来看看其他目录吧

  • buddyinfo:每个内存区中的每个order有多少块可用,和内存碎片问题有关

  • cmdline:启动时传递给kernel的参数信息

more cmdline

BOOT_IMAGE=/boot/vmlinuz-4.2.0-27-generic.efi.signed root=UUID=396873ff-c6f0-44ba-9c8f-a40e5e1c5c67 ro quiet splash vt.handoff=7

```

  • cpuinfo: cpu的信息

  • crypto:内核使用的所有已安装的加密密码及细节

  • devices:已经加载的设备并分类

  • dma:已注册使用的ISA DMA频道列表

  • execdomains:Linux内核当前支持的execution domains

  • fb:帧缓冲设备列表,包括数量和控制它的驱动

  • filesystems:内核当前支持的文件系统类型

  • interrupts:X86架构中每个IRQ中断数

  • iomem:每个物理设备当前在系统内存中的映射

  • ioports:一个设备输入输出所使用的注册端口范围

  • kcore:代表系统的物理内存,存储为核心文件格式,里面显示的是字节数,等于RAM大小加上4kb

  • kmsg:记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理

  • loadavg:根据过去一段时间内cpu和io的状态得出的负载状态,与uptime命令有关

more loadavg

0.02 0.09 0.16 1/800 19755

root@ruanyang-HP-ProDesk-680-G2-MT:/proc# uptime

14:48:59 up 10 days, 4:53, 11 users, load average: 0.02, 0.09, 0.16

root@ruanyang-HP-ProDesk-680-G2-MT:/proc# ps -ef | grep 19755

root 19758 32401 0 14:49 pts/42 00:00:00 grep --color=auto 19755

```

- loadavg文件里面一共五个值,前三个值分别是前1分钟、5分钟、15分钟内的平均负载,第四个数表示当前运行的进程数与总进程数的比例,最后一个数字表示的是最近运行的进程id

-  系统平均负载:在特定时间间隔内运行队列中的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:
- 没有在等待I/O操作的结果
- 没有主动进入等待状态(就是没有调用wait)
- 没有被停止(eg:等待终止) 一般来讲,每个CPU内核当前活动进程数不大于3,则系统运行表现良好,这里说的是每个CPU内核,就是说如果主机是四核CPU的话,就是12个,当大于12的时候,系统负载就会很严重。最直接的表现就是特别慢,甚至出现卡死的情况。
  • locks:内核锁住的文件列表

  • mdstat:多硬盘,RAID配置信息

  • meminfo:RAM使用的相关信息

  • misc:其他的主要设备(设备号为10)上注册的驱动

  • modules:所有加载到内核的模块列表

  • mounts:系统中使用的所有挂载

  • mtrr:系统使用的Memory Type Range Registers (MTRRs)

  • partitions:分区中的块分配信息

  • pci:系统中的PCI设备列表

  • slabinfo:系统中所有活动的slab缓存信息

  • stat:所有的CPU活动信息

  • sysrq-trigger:

    见博客sysrq-trigger的详解

参考文献:

linux中uptime命令查看linux系统负载

Linux-/proc目录简介的更多相关文章

  1. 添砖加瓦:Linux /proc目录简介

    Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文件系统的方式为访问系 ...

  2. [转帖]linux /proc目录下的文件为何无法用vi编辑保存

    linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...

  3. Linux下/proc目录简介

    文章转载至:http://blog.csdn.net/zdwzzu2006/article/details/7747977 1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在 ...

  4. Linux下/proc目录简介(转)

    1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

  5. linux下目录简介——/proc

    1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

  6. [转]Linux下/proc目录简介

    1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

  7. linux /proc目录

    1. /proc目录Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...

  8. linux /proc目录说明(访问内核数据结构,修改内核设置)

    1. /proc目录 Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构.改变内核设置的机制.proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以 ...

  9. Linux /proc目录详解

    Linux系统上的/proc目录是一种文件系统,即proc文件系统.与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过 ...

  10. linux proc目录和常用操作

    ------------------------------------------------/proc----------------------------------------------- ...

随机推荐

  1. 精通Web Analytics 2.0 (11) 第九章: 新兴分析—社交,移动和视频

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第九章: 新兴分析-社交,移动和视频 网络在过去几年中发生了不可思议的发展变化:从单向对话到双向对话的转变; 由视频,Ajax和 ...

  2. 关于 m4 文本处理引擎

    使用 m4 开源项目还是挺多的,之前看到都有的怕怕的,选择自动略过.今天鼓起勇气来学习一波. 首先 m4 processor 是一个“宏定义”处理器,也就是说,他是一个纯粹的文本处理器,干些管理模板, ...

  3. Beta阶段项目终审报告

    先上图 设想和目标 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要是用来解决玩狼人杀这款桌游时无牌.无法官.游戏流程不熟悉等情况的.我觉得我们对典型 ...

  4. HDU 5944 Fxx and string(暴力/枚举)

    传送门 Fxx and string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Othe ...

  5. 微信学习总结 02 ngrok 部署本机代码,使外网可以访问

    一 什么是ngrok ngrok is a reverse proxy that creates a secure tunnel from a public endpoint to a locally ...

  6. 解决Windows版Git出现templates not found的问题

    环境: Win10 x64 Git windows客户端(下载自 https://git-scm.com/) SourceTree 1.9.6.1(使用系统安装的Git,而非SourceTree内嵌的 ...

  7. Swift-UIButton

    // let bt = UIButton(frame:CGRectMake(10,20,50,50)) let button = UIButton(frame:CGRectMake(10, 150, ...

  8. 大神php摘录

    1. $rs = M('order')->where('id='.$res['id'])->save($order); )){ M('member')->where('id='.$m ...

  9. 解决httpd: Could not reliably determine the server's fully qualified domain name

    解决方案: 用记事本打开 httpd.conf 将里面的 #ServerName localhost:80 注释去掉即可. 再执行 httpd 然后可以通过浏览器访问 http://localhost ...

  10. 如何获得Webapp的根项目路径 即ServletContext.getRealPath() 的输入参数要以"/"开头

    ServletContext.getRealPath() 的输入参数要以"/"开头 2014-03-26 15:54 5738人阅读 评论(1) 收藏 举报 版权声明:本文为博主原 ...