/proc /dev /sys 目录的用途


author: hjjdebug
date: 2024年 12月 25日 星期三 16:32:44 CST
description: /proc /dev /sys 目录的用途


文章目录

    • 甲: /proc目录:
      • 对module 的管理:
      • $cat /proc/devices
    • 乙: /dev 目录
      • 创建设备节点命令 mknod
    • 丙: /sys 目录
      • 1. /sys/dev
      • 2. /sys/devices
      • 3. /sys/module
      • 4. /sys/class

甲: /proc目录:

是一个虚拟文件系统,/proc存储的是当前内核的运行状态信息。
用户可以通过访问/proc目录下的文件获取系统硬件信息和正在运行的进程信息。
例如,
/proc/cpuinfo, 提供了当前cpu信息, 是lscpu 的信息来源
/proc/meminfo, 提供了当前内存的信息。 是 free
/proc/xxx_processID, 提供了各个进程的信息
/proc/sysrq-trigger, 系统请求键. 向它输入g, 会使系统进入调试状态,等待外部接入.
例:
//注册ttyS1 为kgdb调试 on cable 的设备
sudo sh -c “echo ttyS1 > /sys/module/kgdboc/parameters/kgdboc”
sudo sh -c “echo g > /proc/sysrq-trigger”

重点介绍一下 /proc/devices 文件.
/proc/devices 是一个文件. 提供了当前设备信息
其中记录的设备包括了通过insmod加载到内核的,

对module 的管理:

可以通过lsmod查看module
通过insmod 加载module, 通过rmmod 卸载module,
未直接编译到内核的设备驱动就是可卸载的模块. 即驱动也可以动态加载和卸载.

怎样查看设备的主设备号?

$cat /proc/devices

查看字符设备 :“Character devices”,
在命令行输入:
$cat /proc/devices
看其前半部分

查看块设备 :“block devices”,
在命令行输入:
$cat /proc/devices
看其后半部分

查看块设备还可以使用
$lsblk

/proc文件系统为系统管理员和开发人员提供了一种方便的方式来了解系统内部及各进程的运行情况

乙: /dev 目录

/dev是一个特殊的文件系统,
系统已经运行起来,我们(应用程序)怎样与系统打交道?
就是通过对/dev下这些文件的读写及控制来访问实际的硬件设备。

我们可以通过mknod命令来创建设备文件,需要知道设备类型和主设备号

创建设备节点命令 mknod

//mknod /dev/设备名 <b/c>类型 [主设备号] [次设备号]
其中b(块设备), c(字符设备)
例如:
创建一个名为test_device的字符设备,其主设备号230,次设备号为0
sudo mknod /dev/test_device c 230 0

如果底层驱动支持,应用程序对这些文件的操作会调用到底层驱动,实现对硬件的控制。

丙: /sys 目录

也是一个虚拟文件系统,主要用于访问Linux内核的信息。
通过kobj_add函数注册的设备、驱动和总线会在/sys目录下创建对应的文件和目录,形成一个树形结构,便于管理和访问。
介绍其目录下的两个子目录 /sys/dev /sys/devices

1. /sys/dev

它有两个子目录block和char,存放的是块设备和字符设备的主次设备号,形式为(major:minor),
它指向 /sys/devices 目录下的设备。

2. /sys/devices

设备树文件,按照设备挂接的总线类型,组织成层次结构,保存了系统所有的设备,

用户态的后台程序(udev)会动态地周期性的扫描/sys目录中的属性项来自动管理设备文件(也称为设备节点),
从而在/dev目录建立或者删除对应的设备文件。

3. /sys/module

系统模块信息目录, 新添加的模块可以从这里查看

4. /sys/class

该目录以类的方式来组织驱动

需要一个真实的驱动来进行实际的操练,参考…

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

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

相关文章

来道面试题——CopyOnWriteArrayList

原理 初始化时候&#xff0c;CopyOnWriteArrayList内部维护了一个可变数组&#xff0c;用于存储元素当执行数据变更操作的时候&#xff0c;会先创建一个原数组的副本&#xff0c;在副本上进行写操作&#xff0c;修改副本中的元素。写操作完成之后&#xff0c;把原数组的引用指…

Nginx整合Lua脚本

Nginx-Lua Nginx整合Lua脚本 Lua环境搭建 下载地址 linux环境下 yum install lua安装后验证 lua -vLua脚本执行 lua xxx.luaNginx整合Lua nginx需要添加lua模块 嵌入内容 示例如下 修改nginx.conf如下 location /lua {default_type text/plain;content_by_lua ngx.sa…

【MinIO系列】MinIO Client (mc) 完全指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Jmeter录制https请求

jmeter 5.5版本&#xff0c;chrome浏览器 1、首先添加Test Plan-Thread Group-HTTP(S) Test Script Recorder 2、设置HTTP(S) Test Script Recorder界面的Port&#xff08;监听端口&#xff0c;设置浏览器代理时需要与这里保持一致&#xff09;、HTPS Domains&#xff08;录制…

安装Visual studio2022后,没法新建.net 4.5.2的项目

在Visual Studio 2022中无法新建.NET Framework 4.5.2的项目&#xff0c;通常是因为Visual Studio 2022默认不再支持较旧的.NET Framework版本&#xff0c;如4.5或4.5.2。不过&#xff0c;你可以通过一些手动步骤来使Visual Studio 2022支持.NET Framework 4.5.2项目。以下是一…

Nginx配置:如何在一个域名下运行两个网站

在现代的Web应用开发中&#xff0c;网站的数量和复杂性越来越高&#xff0c;多个网站使用同一个域名的情况也越来越常见。通过Nginx配置&#xff0c;我们可以轻松实现两个网站共用一个域名&#xff0c;并根据特定的路径、子域名或其他规则对流量进行分发。本文将详细介绍如何使…

前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!

Vue 快速上手 Vue概念 Vue 是一个用于构建用户界面的渐进式框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;循序渐进 框架&#xff1a;一套完整的项目解决方案 Vue 的两种使用方式: ① Vue 核心包开发 场景:局部 模块改造 ② Vue 核心包 &am…

基于Spring Boot的高校请假管理系统

一、系统背景与意义 随着高校规模的扩大和学生数量的增加&#xff0c;传统的请假管理方式已经难以满足高校管理的需求。人工请假流程繁琐、耗时长&#xff0c;且容易出现信息错误或遗漏。因此&#xff0c;开发一套基于Spring Boot的高校请假管理系统具有重要意义&#xff0c;它…

Gate.io 平台通证 GT:持续赋能与销毁、财富效应显著

在瞬息万变的加密市场中&#xff0c;每一轮牛熊转换都在加速 CEX 市场的一轮又一轮洗牌&#xff0c;这也使得该赛道的格局始终处于动态的变化。而在本轮牛市中&#xff0c;CEX 赛道也正在从最初的三大领衔变成了多强角逐&#xff0c;而 Gate.io 作为创立 11 余年的老牌交易平台…

mysql怎么返回一个字段逗号分隔后的所有数据的sql

mysql怎么返回一个字段逗号分隔后的所有数据的sql 场景描述5.7版本MySql : 完整sql如下sql解析8.0 版本MySql : 完整sql如下 场景描述 mysql有一张表比如result表,表中有个字段场景id:scene_id,这个id存储的值可以是单个的id也可以是多个id用逗号拼接起来的&#xff0c;现在需…

RK3576 Android14编译OTA包提示java.lang.UnsupportedClassVersionError问题

最近遇到RK3576 Android14编译OTA包时&#xff0c;出现如下报错log: Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/signapk/SignApk has been…

Spring Boot 中的 @Scheduled 定时任务以及开关控制

Scheduled注解是Spring框架&#xff08;包括Spring Boot&#xff09;中用于实现定时任务的一种方式。以下是对Scheduled注解的详细解析&#xff1a; 一、基本概念 Scheduled注解允许开发者在Spring容器中定义定时任务。通过简单地在一个方法上添加Scheduled注解&#xff0c;S…

WebRTC音视频同步原理与实现详解(下)

WebRTC音视频同步原理与实现详解&#xff08;上&#xff09; 第四章、音视频同步实现详解 4.1 音视频同步标准 音视频做到什么程度才算是同步呢&#xff1f; 关于音画同步, 业界有3个标准&#xff1a; 1&#xff09;ITU-R BT.1359&#xff08;1998&#xff09;&#xff1a…

1.系统学习-线性回归

系统学习-线性回归 前言线性回归介绍误差函数梯度下降梯度下降示例 回归问题常见的评价函数1. MAE, mean absolutely error2. MSE, mean squared error3. R square &#xff08;决定系数或R方&#xff09; 机器学习建模流程模型正则化拓展阅读作业 链接: 2.系统学习-逻辑回归 …

Oracle 日常巡检

1. 检查服务器状态 1.1. CPU使用情况 1.1.1. top top 命令是 Linux 和 Unix 系统中用于显示实时系统状态的工具&#xff0c;特别是对于监控 CPU 和内存的使用非常有用。 在命令行中输入 top&#xff0c;top 会显示一个实时更新的界面&#xff0c;其中包含系统的关键指标&am…

熊军出席ACDU·中国行南京站,详解SQL管理之道

12月21日&#xff0c;2024 ACDU中国行在南京圆满收官&#xff0c;本次活动分为三个篇章——回顾历史、立足当下、展望未来&#xff0c;为线上线下与会观众呈现了一场跨越时空的技术盛宴&#xff0c;吸引了众多业内人士的关注。云和恩墨副总经理熊军出席此次活动并发表了主题演讲…

如何在网页端使用 IDE 高效地阅读 GitHub 源码?

如何在网页端使用 IDE 高效地阅读 GitHub 源码&#xff1f; 前言什么是 GitHub1s&#xff1f;使用 GitHub1s 阅读 browser-use 项目源码步骤 1: 打开 GitHub 项目页面步骤 2: 修改 URL 使用 GitHub1s步骤 3: 浏览文件结构步骤 4: 使用代码高亮和智能补全功能步骤 5: 快速跳转和…

3D布展平台主要有哪些功能?有什么特点?

3D布展平台是一种利用3D技术和虚拟现实&#xff08;VR&#xff09;技术&#xff0c;为用户提供线上虚拟展览和展示服务的平台。这些平台通常允许用户创建、设计和发布3D虚拟展厅&#xff0c;从而提供沉浸式的展览体验。以下是对3D布展平台的详细介绍&#xff1a; 一、主要功能 …

TowardsDataScience 博客中文翻译 2018~2024(一百二十三)

TowardsDataScience 博客中文翻译 2018~2024&#xff08;一百二十三&#xff09; 引言 从 2018 年到 2024 年&#xff0c;数据科学的进展超越了许多技术领域的速度。Towards Data Science 博客依然是这个领域的关键平台&#xff0c;记录了从基础工具到前沿技术的多方面发展。…

Docker Build 命令详解:在 Ubuntu 上构建 Docker 镜像教程

简介 Docker 通过提供轻量级、可移植和高效的解决方案&#xff0c;彻底改变了软件开发和部署。docker build 命令是 Docker 镜像创建过程的核心。本文将探讨 docker build 命令、其语法、用法以及优化 Docker 构建的最佳实践。本教程的目标是手把手教你如何在 Linux 服务器上使…