Linux下的dev,sys和proc(TODO)

news2025/1/20 1:48:24

(TODO)

参考:

proc虚拟文件系统

sysfs文件系统

还有一个sysfs

在 Linux 系统中,/dev/sys/proc 是三个特殊的虚拟文件系统目录,它们各自有特定的用途,主要用于与设备和内核交互。以下是它们的详细区别和功能说明:

还有一个run也是虚拟文件系统目录。

/dev 文件系统包含所有设备文件的目录,这些设备文件是操作系统与硬件交互的接口。

/sys 文件系统是一个伪文件系统,用于暴露内核对象模型(Kernel Object Model)的信息。它提供了一种查看和修改系统硬件和内核模块状态的接口。

/proc 文件系统是一个伪文件系统,它提供了关于内核、进程和系统信息的接口。它是动态生成的,包含当前系统和进程的状态信息。

/run 文件系统是一个临时文件系统,用于存储系统启动后运行时的数据,如 PID 文件、套接字文件等。


1. /dev(Device Filesystem)

功能
  • 包含所有设备文件,用于用户空间程序访问硬件设备。
  • 设备文件不是普通文件,而是指向实际硬件设备的接口。
设备类型
  • 字符设备(Character Device):按字节访问设备,例如键盘、串口。
    • 例如:/dev/tty(终端)、/dev/random(随机数生成器)
  • 块设备(Block Device):按块访问设备,例如硬盘、U盘。
    • 例如:/dev/sda(硬盘)、/dev/mmcblk0(SD卡)
实现机制
  • 通过 udev 动态管理设备节点。
  • 当硬件设备被插拔时,udev 自动创建或移除对应的设备文件。
示例
ls -l /dev
# 输出类似于:
crw------- 1 root root 4, 64 Jan 9 10:00 /dev/ttyS0
brw-rw---- 1 root disk 8, 0 Jan 9 10:00 /dev/sda
  • c/b 表示字符设备或块设备,8, 0 是主设备号和次设备号。

2. /proc(Process Filesystem)

功能
  • 提供一个与系统和进程相关的虚拟文件系统,主要用于显示内核信息和运行时状态。
  • 主要目的是允许用户空间访问内核数据结构,无需修改代码或重启系统。
特点
  • 不占用实际磁盘空间,所有文件都是虚拟文件。
  • 文件内容是动态生成的,反映当前内核和系统的状态。
常见文件和目录
  • 进程信息:每个运行中的进程在 /proc 中有一个以其进程号命名的目录。
    • 例如:/proc/1234/ 包含进程 1234 的状态、内存映射等信息。
  • 系统信息
    • /proc/cpuinfo:CPU 信息。
    • /proc/meminfo:内存使用情况。
    • /proc/modules:加载的内核模块。
    • /proc/devices:当前系统中注册的设备。
示例
cat /proc/cpuinfo
# 显示 CPU 详细信息

3. /sys(Sysfs Filesystem)

功能
  • 提供一个与设备、驱动程序和内核子系统交互的接口。
  • /proc 的补充,专注于设备驱动和内核的设备模型。
特点
  • 组织形式是层次化的,反映内核设备模型的结构。
  • 允许用户动态查看和修改设备参数。
常见用途
  • 查看和管理设备属性:
    • 设备属性通过文件暴露,例如 /sys/class/net/eth0/ 中的信息反映网络接口的状态。
  • 动态调整系统行为:
    • 修改 /sys 中的文件即可调整内核参数(需要权限)。
示例
ls /sys/class/net
# 显示系统中所有的网络接口
echo 1 > /sys/class/leds/led0/brightness
# 控制 LED 的亮度

对比总结

特性/dev/proc/sys
用途硬件设备的用户接口系统和进程信息的查看接口内核设备模型的交互接口
类型包含字符设备和块设备文件虚拟文件,反映系统和内核状态虚拟文件,反映设备模型
交互方式直接与硬件设备交互只读为主,部分文件可写可读写,允许动态配置设备参数
内容硬件设备节点内核数据结构和进程信息设备、驱动和内核子系统参数
是否动态动态创建/删除设备文件动态生成当前状态信息动态生成设备和驱动结构

总结

  • /dev:设备接口,直接与硬件交互。
  • /proc:提供系统和进程状态,主要用于监控和调试。
  • /sys:内核设备模型接口,允许动态管理和配置设备。

三者结合,为 Linux 系统提供了完整的硬件抽象层和内核交互方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2279147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01设计模式(D3_设计模式类型 - D3_行为型模式)

目录 一、模版方法模式 1. 基本介绍 2. 应用案例一:豆浆制作问题 需求 代码实现 模板方法模式的钩子方法 3. View的draw(Android) Android中View的draw方法就是使用了模板方法模式 模板方法模式在 Spring 框架应用的源码分析 知识小…

Android BitmapShader实现狙击瞄具十字交叉线准星,Kotlin

Android BitmapShader实现狙击瞄具十字交叉线准星&#xff0c;Kotlin <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.…

【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件

&#x1f525; 目录 1. 控件概述 控件体系的发展阶段 2. QWidget 核心属性 2.1 核心属性概览2.2 用件可用&#xff08;Enabled&#xff09; 2.3 坐标系&#xff08;Geometry&#xff09; **实例 1: 控制按钮的位置**实例 2: 表白 程序 2.4 窗口标题&#xff08;windowTiltle&a…

复健第二天之[MoeCTF 2022]baby_file

打开题目在线环境可以看到&#xff1a; 感觉要用伪协议去求&#xff0c;但是我们并不知道flag的位置&#xff0c;这里我选择用dirsearch去扫一下&#xff1a; 最像的应该就是flag.php了 于是就构建payload&#xff1a; **?filephp://filter/convert.base64-encode/resource…

Spring Boot + Apache POI 实现 Excel 导出:BOM物料清单生成器(支持中文文件名、样式美化、数据合并)

目录 引言 Apache POI操作Excel的实用技巧 1.合并单元格操作 2.设置单元格样式 1. 创建样式对象 2. 设置边框 3. 设置底色 4. 设置对齐方式 5. 设置字体样式 6.设置自动换行 7. 应用样式到单元格 3. 定位和操作指定单元格 4.实现标签-值的形式 5.列宽设置 1. 设…

【Web】2025西湖论剑·中国杭州网络安全安全技能大赛题解(全)

目录 Rank-l Rank-U sqli or not Rank-l username存在报错回显&#xff0c;发现可以打SSTI 本地起一个服务&#xff0c;折半查找fuzz黑名单&#xff0c;不断扔给fenjing去迭代改payload from flask import Flask, request, render_template_stringapp Flask(__name__)app…

索引(MySQL)

1. 没有索引&#xff0c;可能会有什么问题 索引&#xff1a;提高数据库的性能&#xff0c;索引是物美价廉的东西了。不用加内存&#xff0c;不用改程序&#xff0c;不用调sql&#xff0c;只要执行 正确的 create index &#xff0c;查询速度就可能提高成百上千倍。但是天下没有…

C#在Json序列化时将key和value转为对应的中文

在C#中&#xff0c;实体类可以通过System.Text.Json或Newtonsoft.Json库等方式直接序列化为json字符串&#xff0c;key为字段&#xff08;属性&#xff09;名&#xff0c;value为值。 上面的方式虽然实现简单&#xff0c;但是有个缺陷&#xff0c;就是转化后的json给外人展示时…

23- TIME-LLM: TIME SERIES FORECASTING BY REPRO- GRAMMING LARGE LANGUAGE MODELS

解决问题 用LLM来解决时序预测问题&#xff0c;并且能够将时序数据映射&#xff08;reprogramming&#xff09;为NLP token&#xff0c;并且保持backbone的大模型是不变的。解决了时序序列数据用于大模型训练数据稀疏性的问题。 方法 Input Embedding 输入&#xff1a; X …

使用 Java 开发 Android 应用:Kotlin 与 Java 的混合编程

使用 Java 开发 Android 应用&#xff1a;Kotlin 与 Java 的混合编程 在开发 Android 应用程序时&#xff0c;我们通常可以选择使用 Java 或 Kotlin 作为主要的编程语言。然而&#xff0c;有些开发者可能会想要在同一个项目中同时使用这两种语言&#xff0c;这就是所谓的混合编…

左神算法基础提升--4

文章目录 树形dp问题Morris遍历 树形dp问题 求解这个问题需要用到我们在基础班上学到的从节点的左子树和右子树上拿信息的方法。 求最大距离主要分为两种情况&#xff1a;1.当前节点参与最大距离的求解&#xff1b;2.当前节点不参与最大距离的求解&#xff1b; 1.当前节点参与最…

拆分工作簿转换PDF格式文件一步到位-Excel易用宝

今天一大早老板急匆匆的跑进办公室说&#xff0c;快快快&#xff0c;&#xff0c;快把这个工作簿中的工作表拆分出来&#xff0c;然后转换成PDF格式文件发给客户。 我一看这么多工作表&#xff0c;又是拆分表格&#xff0c;又是转换文件&#xff0c;这么复杂的工作&#xff0c…

SSM课设-学生管理系统

【课设者】SSM课设-学生管理系统 技术栈: 后端: SpringSpringMVCMybatisMySQLJSP 前端: HtmlCssJavaScriptEasyUIAjax 功能: 学生端: 登陆 学生信息管理 个人信息管理 老师端: 多了教师信息管理 管理员端: 多了班级信息管理 多了年级信息管理 多了系统用户管理

Python调用go语言编译的库

要在 Python 中调用用 Go 语言编写的库&#xff0c;可以使用 Go 语言的 cgo 特性将 Go 代码编译成共享库&#xff08;如 .so 文件&#xff09;&#xff0c;然后在 Python 中通过 ctypes 或 cffi 模块加载和调用这个共享库。 新建main.go文件&#xff0c;使用go语言编写如下代码…

JavaWeb简单开发

JavaWeb 开发是指基于 Java 技术栈进行 Web 应用开发的过程&#xff0c;主要依赖于 Java EE 或者 Spring 框架来构建服务器端应用。JavaWeb 的技术栈比较广泛&#xff0c;通常包括以下几个部分&#xff1a; 示例&#xff1a;简单的 JavaWeb 应用&#xff08;Spring Boot Thyme…

[Mac + Icarus Verilog + gtkwave] Mac运行Verilog及查看波形图

目录 1. MAC安装环境 1. 1 Icarus Verilog 编译 1. 2 gtkwave 查看波形 2. 安装遇到的问题 2. 1 macOS cannot verify that this app is free from malware 2. 2 gtkwave-bin is not compatible with macOS 14 or later 3. 运行示例 3. 1 源代码 3. 2 编译Verilog 3. 3 生成.v…

Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5

大家好&#xff0c;我是编程乐趣。 行业诸多大佬一直在说&#xff1a;“‌2025年将是AI应用元年‌”&#xff0c;虽然说大佬的说法不一定对&#xff0c;但AI趋势肯定没错的。 对于我们程序员来说&#xff0c;储备AI应用开发技能&#xff0c;不管对找工作、接项目、创业肯定是…

物联网网关Web服务器--Boa服务器移植与测试

1、Boa服务器介绍 BOA 服务器是一个小巧高效的web服务器&#xff0c;是一个运行于unix或linux下的&#xff0c;支持CGI的、适合于嵌入式系统的单任务的http服务器&#xff0c;源代码开放、性能高。 Boa 嵌入式 web 服务器的官方网站是http://www.boa.org/。 特点 轻量级&#x…

Maven的多模块架构设计诺依的多模块

Maven的多模块架构设计 多模块架构设计&#xff0c;本文采用 诺依的多模块架构设计分析

.Net 6.0 .Net7.0 .Net8.0 .Net9.0 使用 Serilog 按日志等级写入日志及 appsetting.json 配置方式实现

前言 最近使用最新版的Serilog记录日志时&#xff0c;发现以前有些关于Serilog的Nuget弃用了&#xff0c;最关键的是有些配置写法也改变&#xff0c;于是就整理了一下最新版的Serilog配置方式(appsetting.json)的使用 说明&#xff1a;我是用的.Net6&#xff0c;最新长期支持…