当前位置: 首页 > 面试题库 >

UDEV-在USB闪存驱动器插件上运行程序

李谦
2023-03-14
问题内容

每当将任何USB闪存驱动器(不仅是特定的USB闪存驱动器)插入系统时,我都试图运行一个脚本,并且我已经断断续续地花了大约2周的时间来尝试找出问题。有谁能够帮助我?(如果有帮助,请运行Ubuntu)。

我需要至少传递驱动器序列号和devpath(/ dev / sd **)。


问题答案:

首先,您需要使用规则来检测USB存储设备

/etc/udev/rules.d/10-usbmount.rules:

KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", RUN+="/usr/bin/usbdevinserted"

这将运行我们的自定义可执行shell脚本/usr/bin/usbdevinserted

#!/bin/bash

set 2>&1 >> /tmp/usbdevinfo

此示例脚本转储您需要知道找到哪个设备的环境变量,例如:

DEVLINKS='/dev/disk/by-id/usb-Generic_USB_Flash_Disk-0:0 /dev/disk/by-path/pci-0000:00:13.2-usb-0:2:1.0-scsi-0:0:0:0'
DEVNAME=/dev/sdk
DEVPATH=/devices/pci0000:00/0000:00:13.2/usb2/2-2/2-2:1.0/host29/target29:0:0/29:0:0:0/block/sdk
DEVTYPE=disk
ID_BUS=usb
ID_FS_TYPE=
ID_INSTANCE=0:0
ID_MODEL=USB_Flash_Disk
ID_MODEL_ENC='USB\x20Flash\x20Disk\x20\x20'
ID_MODEL_ID=9380
ID_PART_TABLE_TYPE=dos
ID_PART_TABLE_UUID=61d1df0b
ID_PATH=pci-0000:00:13.2-usb-0:2:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_13_2-usb-0_2_1_0-scsi-0_0_0_0
ID_REVISION=7.76
ID_SERIAL=Generic_USB_Flash_Disk-0:0
ID_TYPE=disk
ID_USB_DRIVER=usb-storage
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Generic
ID_VENDOR_ENC='Generic\x20'
ID_VENDOR_ID=058f
MAJOR=8
MINOR=160
SUBSYSTEM=block


 类似资料:
  • 问题内容: 我正在尝试从 Raspberry Pi 上的 Android Things 应用的USB驱动器中读取文件。我可以像这样扫描已安装设备的列表: __ 显示以下输出: 但是,我的拇指驱动器不在列表中。所以我想我需要以某种方式安装它。如何安装拇指驱动器并访问其中的文件? 问题答案: 仅亚行解决方案 到目前为止,USB驱动器似乎尚未自动安装。为了使您的代码正常工作,我必须手动安装它。 如您所见

  • 问题内容: 我有一个作业,必须在闪存驱动器中提交我的代码。 我在Eclipse中进行了所有编码,并获得了所有输出。我尝试通过命令行运行它,并且可以正常工作。我将所有Java文件和类文件复制到了闪存驱动器,并通过命令行再次尝试了它在笔记本电脑中的工作方式。但是当我进行潜水并将其放入台式计算机并通过命令行运行时,它无法识别软件包中的类。 我在这个程序包下有一个程序包a1.cis568,我有几个类。主类

  • 问题内容: 我已经为嵌入式Linux项目编写了一个应用程序,并且希望用户插入USB驱动器时,我的应用程序显示特定菜单。我正在用Qt用C ++编写应用程序。 我的系统没有d-bus,但使用的是udev。在我看来,udev是执行此检测的“正确”方法,但似乎很复杂。 谁能指出我正确的方向来开始这一工作?有没有udev的方法吗?如果没有,是否可以使用udev的“入门”指南?我真的不需要太多功能,只需一种方

  • 问题内容: 我正在尝试获取Ubuntu 10.10中当前插入的USB设备的列表,并监视发生的更改,例如使用UDev和D-BUS插入或拔出的设备。我对使用D- BUS进行编程非常陌生。我看到一个示例:Linux:如何检测到USB键盘是插拔的,只有一个使用HAL并且我知道HAL已弃用。我发现了一些有效的代码,对其进行了一些修改,仅对仅存储设备(例如USB棒,媒体播放器或cd- rom设备)不起作用。我

  • 我是Spark的新手,我了解到转换发生在工作者身上,动作发生在驱动者身上,但是中间动作也可以发生在工作者身上(如果操作是可交换的和关联的),这给出了实际的并行性。 我查看了相关和协方差代码:https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/stat/correlation/

  • 问题内容: 我正在做一个项目,我需要使用基于USB的数字签名来签署pdf。我已经在本地尝试了以下代码,并且能够对pdf进行签名。我的问题是天气,以下代码将在基于客户端服务器的senerio中工作。 我的代码是: 请给我建议。谢谢大家 问题答案: 您使用了错误的iText版本,因此您创建的签名不能为将来使用(请阅读本书以了解代码有什么问题)。 您取决于操作系统是Windows的事实。您的服务器也是W