linux下U盘和SD卡的热拔插检测

2023-11-05

在Linux中,可以使用udev(Linux设备管理器)来检测U盘的插入和拔出事件。udev是一个用于管理和监控设备的子系统,它可以通过监视内核事件来触发相应的操作。创建一个udev规则文件

 

10-usb.rules脚本如下

KERNEL=="sd[a-z]*",RUN+="/etc/udev/usb-hotplug.sh %k"

11-sd.rules脚本如下

KERNEL=="mmcblk[0-9]p[0-9]",RUN+="/etc/udev/sd-hotplug.sh %k"

 sd-hotplug.sh脚本内容如下

#!/bin/sh

CONSOLE=/dev/ttyS0
dev=$1
mount_path=/tmp/sd

if [ $ACTION == "add" ]; then
        if [ ! -d $mount_path ]; then
                echo "+++sd add: $dev+++" > ${CONSOLE}
                mkdir $mount_path
                mount -t vfat /dev/$dev $mount_path
                if [ $? != 0 ]; then
                        rmdir $mount_path
                fi
        fi
elif [ $ACTION == "remove" ]; then
        if [ -d $mount_path ]; then
                echo "---sd del: $dev---" > ${CONSOLE}
                umount -l $mount_path
                rmdir $mount_path
        fi
fi

usb-hotplug.sh脚本内容如下

#!/bin/sh

CONSOLE=/dev/ttyS0
dev=$1
mount_path=/tmp/usb

if [ $ACTION == "add" ]; then
        if [ ! -d $mount_path ]; then
                echo "+++usb add: $dev+++" > ${CONSOLE}
          

                if [ -e /dev/${dev}1 ]; then
                        part=1
                fi
                mkdir $mount_path
                mount -t vfat /dev/$dev$part $mount_path
                if [ $? != 0 ]; then
                        rmdir $mount_path
                fi
        fi

elif [ $ACTION == "remove" ]; then
        if [ -d $mount_path ]; then
                echo "---usb del: $dev---" > ${CONSOLE}
                umount -l $mount_path
                rmdir $mount_path
        fi
fi

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux下U盘和SD卡的热拔插检测 的相关文章

  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 使用 Grep 查找两个短语之间的文本块(包括短语)

    是否可以使用 grep 来高亮所有以以下内容开头的文本 mutablePath CGPathCreateMutable 并以以下内容结尾 CGPathAddPath skinMutablePath NULL mutablePath 这两个短
  • 监视目录的更改

    很像一个类似的问题 https stackoverflow com questions 112276 directory modification monitoring 我正在尝试监视 Linux 机器上的目录以添加新文件 并希望在这些新文
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 使用 plistBuddy 获取值数组

    var keychain access groups declare a val usr libexec PlistBuddy c Print var sample plist echo val echo val 0 Ouput Array
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • Web 应用程序的带宽和流量模拟器?

    您能否建议如何创建一个测试环境来模拟 Web 应用程序中的各种类型的带宽和流量 或者也许是一个针对本地主机执行此操作的开源程序 我认为在编写网络应用程序时这是一个非常重要的主题 但这不是一个常见的主题 我能想象创建这种环境的唯一方法是在本地
  • X11 模式对话框

    如何使用 Xlib 在 X11 中创建模式对话框 模态对话框是一个位于应用程序其他窗口之上的窗口 就像瞬态窗口一样 并且拒绝将焦点给予应用程序的其他窗口 在 Windows 中 当试图从模态窗口夺取焦点时 模态也会通过闪 烁模态窗口的标题栏
  • 无法在 64 位 Linux 上从汇编 (yasm) 代码调用 C 标准库函数

    我有一个函数foo以汇编语言编写 并在 Linux Ubuntu 64 位上使用 yasm 和 GCC 编译 它只是使用以下命令将消息打印到标准输出puts 如下所示 bits 64 extern puts global foo secti
  • 使用 inotify 的正确方法是什么?

    我想使用inotifyLinux 上的机制 我希望我的应用程序知道文件何时aaa被改变了 您能给我提供一个如何做到这一点的示例吗 文档 来自监视文件系统活动 inotify https developer ibm com tutorials
  • linux下写入后崩溃

    如果我使用 write 将一些数据写入磁盘上的文件会发生什么 但我的应用程序在刷新之前崩溃了 如果没有系统故障 是否可以保证我的数据最终会刷新到磁盘 如果您正在使用write 并不是fwrite or std ostream write 那

随机推荐

  • canvas小练习之渐变粒子特效

  • 【Python生存分析库scikit-survival的安装及使用教程】

    Python生存分析库scikit survival的安装及使用教程 生存分析是指在人口统计学领域中 对于以某种特定因素为背景下出现某类事件的时间进行统计分析的一种方法 在Python中 scikit survival就是一个十分实用的生存
  • 一文详解 ChatGPT:背后的技术,数据,未来发展

    文章目录 一文详解 ChatGPT ChatGPT背后的技术 基于 Transformer 的预训练语言模型 提示学习与指令精调 思维链 Chain of Thought COT 基于人类反馈的强化学习 Reinforcement Lear
  • Doris系列15- 索引

    文章目录 一 索引概述 二 案例 参考 一 索引概述 目前Doris只支持bitmap 索引 BITMAP 索引仅在单列上创建 bitmap index 位图索引 是一种快速数据结构 能够加快查询速度 语法 index 创建和修改相关语法有
  • RT-Thread分析-日志系统-rt_kprintf分析

    目录 1 前言 2 rt kprintf 3 配置选项 4 console设备 4 1 设备声明 4 2 设备创建 4 3 获取 console device 5 分析rt kprintf 函数 6 rt kprintf重定向 1 前言 内
  • sqli-labs(38-41)

    0x01 原理 堆叠注入 顾名思义就是很多语句结合在一起进行注入 在sql语句中 以 标志着一条语句的结束 要实现堆叠注入就是用 连接多条语句进行注入 即我们可以结束一个语句后 构造下一个语句 而union select也是将两条语句结合在
  • install4j与exe4简介——Java应用程序打包工具

    对于已经完成的Java应用程序开 发项目 从商业化角度看 应该制作成安全稳定的安装程序包来保证产品的安全和企业的利益 现在市面上比较高效的商业化工具有 installshield installanywhere install4j等 ins
  • 2019~2020数字货币领域发展趋势报告

    一 数字货币的概述 1 什么是数字货币 对于数字货币 目前并没有准确的统一定义 根据百度百科资料显示 数字货币是电子货币形式的替代货币 数字金币和密码货币都属于数字货币 是一种不受管制的 数字化的货币 通常由开发者发行和管理 被特定虚拟社区
  • pytorch使用profiler对模型性能分析时报错

    源码 参考自 PyTorch模型性能分析 优化及部署 aliyun com def analysis from torch profiler import profile tensorboard trace handler import t
  • Java Instrument 功能使用及原理

    0 介绍 利用 java lang instrument 做动态 Instrumentation 是 Java SE 5 的新特性 它把 Java 的 instrument 功能从本地代码中解放出来 使之可以用 Java 代码的方式解决问题
  • 弹弹弹,弹走鱼尾纹的弹出菜单(vue)

    前言 上一篇面试的总结 大家看的还行 因为量很大 错误在所难免 希望大家发现错误了可以告诉我一声 我的邮箱是236490794 qq com 一个小前端的希望 言归正传 我们老样子直接先上效果图再开始今天的分享这个项目的github可以看一
  • mpvue,uni-app开发微信小程序遇到的坑,直接在组件上写样式失效

    1 问题 在组件上直接写样式在小程序中不生效 解决办法
  • 互联网摸鱼日报(2023-06-25)

    互联网摸鱼日报 2023 06 25 InfoQ 热门话题 PayPal开源JunoDB 支持3500亿次日请求的键值存储 博客园新闻 马斯克小扎公开约架 亿万富翁八角笼决斗 Meta发言人 不是玩笑 亚马逊云斥资1亿美元建AIGC中心 微
  • 分布式训练——集合通信及其通信原语

    分布式训练 集合通信及其通信原语 转自 分布式训练 第3篇 集合通信及其通信原语 作者 常平 1 概述 集合通信 Collective Communications 是一个进程组的所有进程都参与的全局通信操作 其最为基础的操作有 发送sen
  • EHCI控制器(3)——host模式数据传输模型

    3 host模式数据传输模型 3 1控制传输 3 1 1配置通道特性 3 1 2配置通道0 包数量 3 1 3配置通道0 PID 3 1 4配置DMA描述符 3 1 5更新DMA描述符地址 3 1 6清通道0中断状态 3 1 7使能通道0
  • java代码_阿里Java团队的的代码规范,学到很多

    一 迭代entrySet 获取Map 的key 和value 当循环中只需要获取Map 的主键key时 迭代keySet 是正确的 但是 当需要主键key 和取值value 时 迭代entrySet 才是更高效的做法 其比先迭代keySet
  • mysql 本周函数_MySQL的YEARWEEK函数以及查询本周数据(转)

    MySQL的YEARWEEK函数以及查询本周数据 MySQL 的 YEARWEEK 是获取年份和周数的一个函数 函数形式为 YEARWEEK date mode 例如 2010 3 14 礼拜天 SELECT YEARWEEK 2010 3
  • Oracle+jdbc+rac+url,jdbc连接oracle rac数据库的写法

    RAC是real application clusters的缩写 译为 实时应用集群 是Oracle新版数据库中采用的一项新技术 是高可用性的一种 也是Oracle数据库支持网格计算环境的核心技术 jdbc连接oracle rac数据库的写
  • JDBC与PostgreSQL(二)

    目录 一 执行DDL语句 二 执行DML语句 三 执行DQL语句 四 使用预编译的方式执行SQL语句 推荐 一 执行DDL语句 SQL的DDL语句也就是数据定义语言 Data Definition Language 在JDBC中需要获取St
  • linux下U盘和SD卡的热拔插检测

    在Linux中 可以使用udev Linux设备管理器 来检测U盘的插入和拔出事件 udev是一个用于管理和监控设备的子系统 它可以通过监视内核事件来触发相应的操作 创建一个udev规则文件 10 usb rules脚本如下 KERNEL