Articles of UDEV

Adb在一段时间后停止检测我的手机

我正在开发一个Linux机器上的android和我已经创build了一个android的udev规则,它的工作原理。 一段时间后,如果我拔下设备并重新插入, adb不会识别该设备,如果我运行lusb或dmesg获取有关该设备的信息。 我试图重新加载udev规则,它不工作,我甚至试图杀死adb进程,但它仍然无法正常工作。 有人可以帮忙吗? 无论如何,谢谢。

udevadm vs linux hotplug

我有点困惑与下面列出的问题: 当我在我的桌面上执行udevadm时,它能够侦听从内核发送的uevent 。 我想在执行udevadm之前,会检查udevd的可用性。 这意味着,如果udevd在我的桌面上不可用, udevadm将无法工作。 我的想法是否正确? 为了拥有udevadm的相同function,我发现linux也提供了另一种方式 归档这个。 这就是所谓的networking连接。 令我困惑的是,如果我这样做,我可以使用udevadm同样的事情。 因此, udev与netlink socket什么区别? socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT); <—-我创build的套接字来听uevent 。 感谢avd的反馈。 得到你的反馈后,我仍然有一些问题要问。 不仅udevd可以从内核听消息,而且还有udevadm 。 我的想法是否正确? 或者udevadm只是pipe理udevd 。 通过设置绑定到NETLINK_KOBJECT_UEVENT的套接字,用户空间代码也可以监听从内核发送的事件。 在这一点上,似乎我没有理由selectudev来完成这个function。 这两种方法有什么不同吗? 在用户空间中,两个不同的进程可以同时监听uevent吗? netlink可以同时发送消息给这些进程吗?

内核中如何触发uevent

uevents通过netlink套接字从内核空间发送到用户空间。 在内核中,必须有东西触发事件。 我想有两种可能性: 硬件中断 – 这意味着,一旦硬件中断发生,内核发送事件到用户空间,表示发生了一些事件。 软件轮询 – 这意味着,总是有一个守护进程来检查这些文件系统,看看是否有任何改变。 如果是这样,那么将这些信息更新到上层。 有谁能提供你的反馈? 谢谢

如何在USB闪存驱动器插入上运行Python脚本

我的目标是在USB闪存驱动器插入上运行Python脚本。 我写了一个udev规则和一个在该规则中调用的shell脚本。 udev规则:/etc/udev/rules.d/10-usb.rules KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="usb", RUN+="/home/Hypotheron/Desktop/script.sh" script.sh: #!/bin/sh echo 'Hello, world.' > /home/Hypotheron/Desktop/foo.txt #/home/Hypotheron/Desktop/job.py & exit 我的Python文件的第一行是: #!/usr/bin/python 我也做了以下这些命令: chmod +x job.py chmod +x script.sh 在写入foo.txt的行被取消注释的script.sh中,每个闪存驱动器插入都将创buildfoo.txt文件。 当我注释该行并取消注释运行Python文件的行时,它不起作用。 在两种情况下,通过terminal运行script.sh工作,但插入闪存驱动器只有foo.txt的情况下工作。 任何帮助,将不胜感激。

如何创build一个英特尔graphics“监视器插入”的callback?

我有一个英特尔graphicseeepc。 我想钩上一个脚本,通过VGA插入显示器事件。 怎么做?

从udev启动的脚本不再有DISPLAY访问?

当我插入外部驱动器时,我有一个从udev运行的脚本。 它一直工作。 但从Linux 3.8 / Xorg 1.12 / Mint 14 ( Ubuntu 12.10兼容)升级到Linux 3.11 / Xorg 1.14 / Mint 16 ( Ubuntu 13.10兼容)后,它不再工作。 该脚本仍然运行,但没有任何需要显示的命令工作。 我想通过退出udev守护进程并手动运行udevd –debug进行详细输出(更多下面)。 这个脚本用于Mint 14 / 12.10 : export DISPLAY=:0 UUID=$1 DEV=$2 notify-send -t 700 "mounting $DEV ($UUID)" gnome-terminal -t "Backing up home…" -x rsync long line of data zenity –warning –text="Done." […]

如何获得SD卡事件的通知?

我想检查一下SD卡的存在,并接收SD卡添加/删除的通知。 到目前为止,我已经使用了libudev ,并且制作了一个侦听SD卡事件的小应用程序。 代码如下: #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <stddef.h> #include <errno.h> #include <sys/time.h> //debug -> remove me #include <libudev.h> #define ADD_FILTER "add" #define REMOVE_FILTER "remove" #define SUBSYSTEM_FILTER "block" #define ATTR_FILTER "ID_MODEL" #define SD_ATTR_VALUE "SD_MMC" #define ATTR_ACTIVE_SD "ID_PART_TABLE_TYPE" static bool isDeviceSD(struct udev_device *device); static bool isDevPresent(struct udev *device); static void print_device(struct […]

python udisks – 枚举设备信息

很显然,使用udisks二进制可以获得大量有关连接磁盘的信息: udisks –show-info /dev/sda1 udisks显然只是列举了可用的udev数据。 是否有可能使用python获取这些信息? 说例如,如果我只是想检索设备的序列号,安装点和大小。

Bash脚本来检测我的USB插入,然后与目录同步

有一个Bash脚本和/或守护进程,我可以写,将检测特定的USB驱动器,然后同步该驱动器与目录?

以编程方式获取链接速度?

我正在编写一个报告本地机器上networking设备属性的应用程序。 我需要的MAC地址,MTU,链接速度和其他一些。 我正在使用udev。 我已经想出了如何获得mac地址和mtu,但不知道如何获得链接速度。 我可以从terminal使用ethtool,但我需要一种方式来获得它的编程。 有谁知道我可以如何获得与udev或其他库的链接速度属性?