脚本实现当检测到树莓派插上U盘后自动运行

要在树莓派上检测U盘插入并自动运行脚本,你可以使用udev规则来实现。udev是Linux内核的设备管理器,它管理设备节点的创建和删除。当U盘插入时,udev会触发一个事件,你可以创建一个规则来捕获这个事件并运行你的脚本。

以下是如何实现这一功能的步骤:

目录

创建一个udev规则文件

给udev规则文件添加执行权限

重启udev服务

编写你的脚本

测试

注意:


创建一个udev规则文件

首先,你需要创建一个udev规则文件来检测U盘插入事件。

打开终端,输入以下命令

#!/bin/bash

sudo nano /etc/udev/rules.d/100-usb-autorun.rules

然后,在打开的编辑器中,输入以下内容(假设你的U盘有特定的属性,比如厂商ID和产品ID,你可以使用lsusb命令来查看):

#!/bin/bash

ACTION=="add", KERNEL=="sd*[1-9]", RUN+="/path/to/your/script.sh"

这里,KERNEL=="sd*[1-9]"表示匹配任何新添加的SCSI磁盘(即U盘)。如果你的U盘有特定的ID,你可以使用ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY"来替换,其中XXXX和YYYY分别是厂商ID和产品ID。

保存并关闭文件。

给udev规则文件添加执行权限

由于udev规则文件需要执行权限,你需要运行以下命令:

#!/bin/bash

sudo chmod a+x /etc/udev/rules.d/100-usb-autorun.rules

重启udev服务

为了让新的udev规则生效,你需要重启udev服务或重启树莓派。运行以下命令来重启udev服务:

#!/bin/bash

sudo udevadm trigger
sudo udevadm control --reload-rules

编写你的脚本

现在,你需要编写一个脚本,这个脚本将在U盘插入时被调用。假设你的脚本名为script.sh,并位于/path/to/your/目录下,你需要确保它有执行权限:

#!/bin/bash

chmod +x /path/to/your/script.sh

你的脚本可能包含类似下面的内容:

#!/bin/bash

echo "USB device detected. Running some commands..."

# 在这里添加你希望执行的命令

测试

现在,当你插入U盘时,udev应该会自动运行你的脚本。你可以插入一个U盘来测试是否一切正常。

注意:

U盘插入时,Linux内核可能会为其分配多个设备节点(如/dev/sda1, /dev/sda2等),但udev规则中的KERNEL=="sd*[1-9]"只会匹配到/dev/sda这样的设备节点,因此它可能在分区被挂载之前就被触发。如果你的脚本依赖于特定的挂载点,你可能需要在脚本中添加逻辑来等待分区被挂载。

如果你的U盘经常更换,或者你有多个U盘并且希望对每个U盘执行不同的操作,你可能需要使用更具体的属性来匹配udev规则,或者使用脚本内部的逻辑来判断是哪个U盘被插入。

  • 21
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值