标签: udev

重命名我的 wlan 网络接口

我知道这个问题类似于“ Udev:重命名我的网络接口”,但我不认为它是重复的,因为我的接口不是通过 udev 规则命名的,并且该问题中的其他答案都不适用于我。

所以我在这台笔记本电脑上有一个 WiFi 适配器,我想将接口从 wlp5s0 重命名为 wlan0:

root@aj-laptop:/etc/udev/rules.d# iwconfig
wlp5s0    IEEE 802.11  ESSID:off/any  
          Mode:Managed  Access Point: Not-Associated   Tx-Power=off   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:on

eth0      no wireless extensions.

lo        no wireless extensions.

root@aj-laptop:/etc/udev/rules.d# ifconfig wlp5s0
wlp5s0: flags=4098<BROADCAST,MULTICAST>  mtu 1500
        ether 00:80:34:1f:d8:3f  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped …
Run Code Online (Sandbox Code Playgroud)

wifi udev

14
推荐指数
1
解决办法
4万
查看次数

udev规则中ATTRS和ATTR的区别?

udev规则中ATTRS和ATTR有什么区别?不是两个属性吗?为什么要区分?

linux udev

14
推荐指数
1
解决办法
7144
查看次数

udev/uevent 如何工作?

所以我只是想知道我对 udev 的解释及其工作原理是否正确,我的理解是否正确,请告诉我。

所以我对udev的理解是它是Linux 上的动态设备管理器,作为守护进程运行

  • 设备发生更改时,例如设备插入内核时,udev 会向 udev发送 uevent ,然后 udev 可以转到 sysfs 查找设备的详细信息,例如供应商、设备名称和型号等。
  • 一旦获得设备的详细信息, Udev 就会将这些属性与特定类型设备的规则集进行匹配,在本例中,该设备可能是 USB 设备。如果存在“为所有 USB 设备创建符号链接”之类的规则,那么 udev 将执行此操作。udev 检查规则并匹配属性以验证设备,然后可以开始向设备添加更改以及执行规则对设备规定的任何操作。

这基本上是我目前的理解,如果我错了,请纠正我,并告诉我额外的信息。

kernel udev devices

14
推荐指数
1
解决办法
2万
查看次数

udev 和 hald 有什么区别?

我刚刚开始深入了解 Linux 的内部结构,我想知道 udev 和 hal 守护进程之间有什么区别。据我所知,两者似乎都负责管理热插拔设备...... udev 停止使用它们来监听,还是它们是两个独立的东西?

udev daemon

13
推荐指数
2
解决办法
3683
查看次数

如何在 Udev 事件上运行长时间进程?

我想在连接 USB 调制解调器时运行ppp连接,因此我使用以下udev规则:

ACTION=="add", SUBSYSTEM=="tty", ATTRS{idVendor}=="16d8",\
    RUN+="/usr/local/bin/newPPP.sh $env{DEVNAME}"
Run Code Online (Sandbox Code Playgroud)

(我的调制解调器显示/devttyACM0

新建PPP.sh:

#!/bin/bash
/usr/bin/pon prov $1 >/dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

问题:

udev事件触发,并newPPP.sh正在运行,但newPPP.sh过程后〜4-5s杀害。ppp没有时间连接(拨号超时为 10 秒)。

我怎样才能运行很长时间的进程,不会被杀死?

我尝试使用nohup,但它也不起作用。

系统:Arch Linux

更新

感谢maxschlepzig,我在这里找到了解决方案。

at now用来运行与 udev 进程分离的作业。

但有一个问题仍未得到解答:为什么有效nohup&无效?

linux udev ppp

13
推荐指数
3
解决办法
2万
查看次数

在systemd下编写udev规则以停止服务的正确方法是什么

我正在运行 Arch Linux,我有一个 udev 规则,它在插入设备时启动服务。在这种情况下,它会在插入 3G 调制解调器时拨打连接。

KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="netcfg@wvdial.service"
Run Code Online (Sandbox Code Playgroud)

但是,如果设备被移除,systemd 不会停止该服务,因此当它再次插入时,它不会启动该服务,因为它已经在运行。

我需要的是一个匹配的 udev 规则,该规则在移除设备以停止服务时运行。

更新

使用下面的答案,我现在拥有的是以下 udev 规则

KERNEL=="ttyUSB*", SYMLINK=="gsmmodem", TAG+="systemd", ENV{SYSTEMD_WANTS}="vodafone.service"
Run Code Online (Sandbox Code Playgroud)

使用以下服务文件(基本上是从 netcfg 服务文件复制和粘贴的:

[Unit]
Description=Netcfg networking service for Vodafone Dongle
Before=network.target
Wants=network.target
BindsTo=dev-gsmmodem.device
After=dev-gsmmodem.device

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/netcfg check-iface wvdial
ExecStop=-/usr/bin/netcfg down wvdial
KillMode=none

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

我正在使用netcfg-wvdialAUR 进行拨号。

linux udev systemd

13
推荐指数
1
解决办法
9312
查看次数

为什么移除设备时不触发此 udev 规则?

我有两只鼠标,其中一只存在鼠标中键和 button6 同时触发的问题。所以我配置~/.Xmodmap了禁用这个按钮。然而,与此同时,我希望我的另一只鼠标仍然可以使用此按钮。所以我写了一个udev规则,xmodmap根据连接的鼠标来改变按钮布局。


设置

这是我目前的设置:

/etc/udev/rules.d/logitech-g7.rules

# deactivate MB 6 when mouse 1 is connected
ACTION=="add", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 1", OWNER="user"
# restore defaults when mouse 1 is disconnected
ACTION=="remove", ENV{DEVTYPE}=="usb_device", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c51a", RUN+="/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper 0", OWNER="user"
Run Code Online (Sandbox Code Playgroud)

/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher_wrapper

#!/bin/bash
/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher "$1"&
Run Code Online (Sandbox Code Playgroud)

/home/user/.scripts/Troubleshooting/Bugfixes/mouseswitcher

#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/user/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME

if [[ "$1" == 1 ]] #differentiate between ADD (1) event and REMOVE (0) event
  then
      /usr/bin/xmodmap /home/user/.XmodmapG7 > /dev/null …
Run Code Online (Sandbox Code Playgroud)

usb udev mouse xmodmap

13
推荐指数
1
解决办法
2万
查看次数

从 udev 规则调用通知发送

我使用 Linux Mint 13 MATE,并且在插入/拔出设备时尝试设置通知。

首先,我找到了udev-notify包,但不幸的是它几乎对我不起作用:它工作的时间很短(1-2 分钟),然后,如果我连接/断开任何设备,它会崩溃:

Traceback (most recent call last):
  File "./udev-notify.py", line 319, in <module>
    notification.show()
glib.GError: GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name :1.1061 was not provided by any .service files
Run Code Online (Sandbox Code Playgroud)

我还没有找到任何解决方案,所以我不得不将其删除。(日提交错误报告也)

令人惊讶的是,到目前为止我还没有找到类似的实用程序。然后我尝试编写应该匹配所有设备的 udev 规则。我添加了新文件/etc/udev/rules.d/notify.rules

ACTION=="add",    RUN+="/bin/bash /home/dimon/tmp/device_plug.sh"
ACTION=="remove", RUN+="/bin/bash /home/dimon/tmp/device_unplug.sh"
Run Code Online (Sandbox Code Playgroud)

和两个脚本:

device_plug.sh:

#!/bin/bash

export DISPLAY=":0"
notify-send "device plugged"

/usr/bin/play -q /path/to/plug_sound.wav &
Run Code Online (Sandbox Code Playgroud)

device_unplug.sh:

#!/bin/bash

export DISPLAY=":0"
notify-send "device unplugged"

/usr/bin/play -q /path/to/unplug_sound.wav &
Run Code Online (Sandbox Code Playgroud)

它有效,但它的工作非常愚蠢。我的问题是:

  1. 如何获取附加设备的实际标题,与我在lsusb输出中看到的相同?目前,我只收到诸如“已插入”和“未插入”之类的通知,但我找不到如何在我的 udev 规则中检索设备名称(如果可以,我会将它作为范围)
  2. 目前,激活的通知太多。比如说,当我连接 U 盘时,我收到了大约 15 …

udev notifications devices notify-send

13
推荐指数
1
解决办法
1万
查看次数

通过主要/次要编号对获取设备节点

下的每个设备节点/dev都有自己的主要/次要编号对。我知道我们可以通过 的方式从设备节点检索这对数字stat,如下所示:

stat -c 'major: %t minor: %T' <file>
Run Code Online (Sandbox Code Playgroud)

或者,ls -l也显示这些数字。

但是我们如何通过给定的主要和次要编号获得设备节点?我知道的唯一方法是某种ls -l+awk技巧,但我真的希望有更好的解决方案。

udev

13
推荐指数
3
解决办法
3万
查看次数

Udev 规则:ACTION=="add" 有效,但 ACTION=="remove" 无效!

我已经写文件90-usb.rules/etc/udev/rules.d/包含:

ACTION=="add", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", RUN+="/bin/mkdir /home/pandya/Desktop/testdir"
ACTION=="remove", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="2008", RUN+="/bin/rmdir /home/pandya/Desktop/testdir"
Run Code Online (Sandbox Code Playgroud)

当我插入设备时 udevACTION=="add"通过RUN+="/bin/mkdir /home/pandya/Desktop/testdir"(工作正常)创建目录

但是当我拔下类似 udev 的设备时ACTION=="remove ,不会通过以下方式删除目录RUN+="/bin/rmdir /home/pandya/Desktop/testdir"

没有问题,/bin/rmdir因为我也检查过用另一个mkdir( RUN+="/bin/mkdir /home/pandya/Desktop/testdir2")替换它,但这也不起作用。

所以,我想知道为什么删除操作不起作用?我如何解决它?

udev trisquel

13
推荐指数
1
解决办法
2万
查看次数

标签 统计

udev ×10

linux ×3

devices ×2

daemon ×1

kernel ×1

mouse ×1

notifications ×1

notify-send ×1

ppp ×1

systemd ×1

trisquel ×1

usb ×1

wifi ×1

xmodmap ×1