linux内核sysfs详解-1,linux内核文件系统:proc、tmpfs、devfs、sysfs简要介绍_weixin_39835321的博客-程序员秘密

技术标签: linux内核sysfs详解-1  

linux内核文件系统:proc、tmpfs、devfs、sysfs

proc:虚拟文件系统,在linux系统中被挂载与/proc目录下。里面的文件包含了很多系统信息,比如cpu负载、 内存、网络配置和文件系统等等。我们可以通过内部文本流来查看进程信息(正在运行的各个进程的PID号也以目录名形式存在/proc目录下)和机器的状态。

常见的目录:apm             # 高级电源管理信息

bus             # 总线配置信息(USB的配置也记录在此)

cmdline         # 内核命令行

Cpuinfo         # 关于Cpu信息

Devices         # 可以用到的设备(块设备/字符设备)

Dma             # 使用的DMA通道

Filesystems     # 支持的文件系统

Interrupts      # 中断的使用

Ioports         # I/O端口的使用

Kcore           # 内核核心印象

Kmsg            # 内核消息

Ksyms           # 内核符号表

Loadavg         # 负载均衡

Locks           # 内核锁

Meminfo         # 内存信息

Misc            # 杂项

Modules         # 加载模块列表(可以想成是驱动程序)

Mounts          # 加载的文件系统

Partitions      # 系统识别的分区表

PCI             # 在PCI总线上,每台设备的详细情况(可以使用lspci来查看)

Rtc             # 实时时钟

Slabinfo Slab   # 池信息

Stat            # 全面统计状态表

Swaps           # 对换空间的利用情况

Version         # 内核版本

Uptime          # 系统正常运行时间

tmpfs:虚拟内存文件系统,使用内存作为临时存储分区,掉电之后会丢失数据,创建时不需要使用mkfs等格式化

1.tmpfs挂载:

mount  -t  tmpfs  -o  size=20M tmpfs  /tmp

df -h

使用/etc/fstab条目:tmpfs  /tmp  tmpfs  default  0  0

2.tmpfs使用:

用来存储临时生成信息

正常使用挂载目录:创建文件,存储信息,删除文件等

3.tmpfs作用

因为内存的访问速度高于flash,所以可以提高存储效率,避免对flash频繁读写(flash寿命有限)

devfs:设备文件,提供类似于文件的方法来管理位于/dev目录下的设备

1.根目录/dev

设备文件创建

创建根文件系统时创建基本的,比如console,tty*等等

设备驱动加载时创建相应的设备文件

2.特殊设备文件

/dev/console

/dev/null    /dev/zero  :黑洞文件

3.缺点

不确定的设备映射,有时一个设备映射的设备文件可能不同,假如挂载的u盘可能对应sda也可能对应sdb

没有足够的主/辅设备号,当设备过多的时候,显然会成为一个问题

sysfs:虚拟内存文件系统,2.6内核之前没有规定sysfs的标准挂载目录,但是在2.6之后就规定了要挂载到/sys目录下(针对以前的 sysfs 挂载位置不固定或没有标准被挂载,有些程序从 /proc/mounts 中解析出 sysfs 是否被挂载以及具体的挂载点,这个步骤现在已经不需要了)。它的作用类似于proc,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好。

与proc的比较:

sysfs 与 proc 相比有很多优点,最重要的莫过于设计上的清晰。一个 proc 虚拟文件可能有内部格式,如 /proc/scsi/scsi ,它是可读可写的,(其文件权限被错误地标记为了 0444 !,这是内核的一个BUG),并且读写格式不一样,代表不同的操作,应用程序中读到了这个文件的内容一般还需要进行字符串解析,而在写入时需要先用字符串格式化按指定的格式写入字符串进行操作;相比而言, sysfs 的设计原则是一个属性文件只做一件事情, sysfs 属性文件一般只有一个值,直接读取或写入。整个 /proc/scsi 目录在2.6内核中已被标记为过时(LEGACY),它的功能已经被相应的 /sys 属性文件所完全取代。新设计的内核机制应该尽量使用 sysfs 机制,而将 proc 保留给纯净的“进程文件系统”。

挂载:

mkdir  sys

mount -t  sysfs   /sysfs

很好的参考文章:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/(使用 /sys 文件系统访问 Linux 内核)

Technorati Tags: linux

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39835321/article/details/116602513

智能推荐

mt6737修改闪光灯阀值_那颗流星的博客-程序员秘密

  相机中这有自动打闪的小图标,设置为自动打闪后,比较亮的环境下也会打开闪光灯,这时需要修改闪光灯的阀值.相关的代码vendor/mediatek/proprietary/hardware/mtkcam/legacy/platform/mt6735/core/featureio/pipe/aaa/ae_mgr/ae_mgr.cppMBOOL AeMgr::IsStrobeBVTrigger(){...

Altium Designer(AD)软件使用记录13-PCB布线部分之数据线的等长处理_朱万利的博客-程序员秘密

Altium Designer(AD)软件使用记录13-PCB布线部分之数据线的等长处理

linux内核链表,内核链表详解,内核链表封装_linux 内核链表_Yengi的博客-程序员秘密

常规链表的缺陷​ 传统的双向循环链表概念简单,操作方便,但存在有致命的缺陷,用一句话来概括就是:每一条链表都是特殊的,不具有通用性。换句话说,对于每一种不同的数据,所构建出来的传统链表都是跟这些数据相关的,所有的链表操作函数也都是数据相关的,换一种数据节点,则所有的操作函数都需要一一重写编写,这种缺陷对于一个具有成千上万种数据节点的工程来说是灾难性的,是不可接受的Linux内核链表的原理(1)把传统链表中的“链”抽象出来,使之成为一条只包含前后指针的纯粹的双循环链表,这样的链表由于不含

密码行业标准目录_孙不朽的博客-程序员秘密

密码行业标准目录序号标准编号标准名称简 介1GM/T 0001-2012《祖冲之序列密码算法》规定祖冲之序列密码算法,以及基于祖冲之算法的机密性算法和完整性算法的算法结构和算法描述,并给出了运算示例。2GM/T 0002-2012

mysql远程登录权限问题_mysql远程登陆权限问题_这一切没有想象那么糟的博客-程序员秘密

远程登录问题mysql默认情况下,只允许localhost连接,如果需要外部IP连接到mysql,需要向mysql数据库里的“user”表里添加相关授权。实例 # 让newuser用户使用newpwd密码从IP:192.168.1.3主机链接到mysql服务器 mysql>GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'192.168.1....

信息熵、条件熵、信息增益、基尼指数的python实现-程序员秘密

手动编写计算信息熵、条件熵、信息增益、基尼指数的函数data = pd.read_excel('customer.xlsx', engine='openpyxl')# 信息熵# data -> 数据框 D -> 指定变量# 返回指定变量对应的信息熵def H(data, D): pk = pd.value_counts(data[D])/len(data[D]) return sum(pk*np.log2(pk)*(-1))# 条件熵# data -> 数

随便推点

关于二轮差速小车轮速计算和里程计计算_差速小车 速度 轮速_kobesdu的博客-程序员秘密

local_costmap:global_frame: odom_combined# robot_base_frame这个通常不是/ base link就是/ base_ footprint对于TurtleBot应设为/ base_footprintrobot_base_frame: /base_footprintupdate_frequency: 3.0publish_frequency: 1.0# 这个参数和下一个参数通常会设为相反的值。全局地图通常是静态的,因此我们通常会把这个参数设为tr

工商银行网站无法访问的解决办法。(网络上面收集来的,看看)_mac_arthur的博客-程序员秘密

E设置也会造成工商银行网站无法访问。单击IE-工具-internet选项-安全-受信任的站点-站点, 将https://mybank.icbc.com.cn https://www.icbc.com.cn 这两个网址 添加到区域中 . 然后将 *对该区域中的所有站点都要求服务器验证(https:)*前面的小方框选上.看可以访问吗?若您网页无法显示,请您尝试使用IP进行登录。 网站首页:ht

2.2 关系模型概念_关系模型的概念_fairydeer~的博客-程序员秘密

关系模型概念关系是关系模型(关系数据模型)的数据结构,给出了存储在关系数据库中数据的描述和数据的值。我们把对数据的描述称为数据的型,也叫关系模式;把数据本身称为数据的值。作为数据库的组成部分,值是动态的数据,随着应用的变化而变化,而对值的描述是净态的,也就是型是相对不变的内容,是关系型数据库的核心。(1)元组(Tuple)元组也称记录,关系表中的每行对应一个元组,组成元组的元素称为分量。数据库中的一个实体或实体之间的一个联系均使用一个元组来表示。(2)属性(Attrbute)关系中的每列对应一

HIVE自定义UDTF函数_牧码文的博客-程序员秘密

其实就是将参数列表封装成了StructObjectInspector对象,如果想要校验参数,那么通过上述的方式,可以看到,调用getAllStructFieldRefs方法,获取所有的输入列列表,遍历就可以取到参数列表了。HIVE提供了丰富的内置函数,但是对于一些复杂逻辑还是需要自定义函数来实现,对此,HIVE也提供了一些自定义的接口和类。注意在UDTF函数中,会出现传入数据异常的问题,在这里我并没有校验参数,在实际生产中是需要校验参数的。UDAF:多进一出,多对一的关系数据。顾名思义,打扫干净,下一位。

windows和Linux系统中怎么关闭8080端口占用?_zzzgd816的博客-程序员秘密

windows和Linux系统中怎么关闭8080端口占用?1. windows中打开cmdnetstat -ano | findstr 8080找到进程的pid,如:TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 6148关掉pidtaskkill /pid 6148 -t -f2. Linux找到端口对应的进...

数组(Arrays)_数组只能表示一维数组_cxww的博客-程序员秘密

数组(Arrays)一、数组1.1数组的定义数组: 由一组名字相同、下标不同的n(n≥1)个相同数据类型的数据元素a0,a1,a2,...,an-1构成的占用一块地址连续的内存单元的有限集合数组的处理比其它复杂的结构要简单① 数组中各元素具有统一的类型;② 数组元素的下标一般具有固定的上界和下界,即数组一旦被定义,它的维数和维界就不再改变。③

推荐文章

热门文章

相关标签