gpt4 book ai didi

linux - 从 udev 执行的通知发送不工作(在脚本中)

转载 作者:太空狗 更新时间:2023-10-29 12:14:13 30 4
gpt4 key购买 nike

我想在桌面上显示插入特定 USB 设备的通知。因此以下是 udev 规则。

KERNEL=="sd*",SUBSYSTEMS=="usb",ACTION=="add",RUN+="/home/username/Desktop/notify_script"

notify_script如下

#!/bin/sh  
su username -c 'notify-send "USB Inserted"'
echo USB_inserted >> /home/username/Desktop/test_file

问题:

如果从命令行以 root 身份执行上述脚本,则它可以完美运行,但是如果从 udev 执行,脚本中的通知发送将不起作用。

问题:

如何使 udev 的通知发送工作?或者有没有其他方法可以实现通知?
是否可以从 udev 调用任何 GUI?

谢谢。

最佳答案

主要问题是,默认情况下,udev-rule 不会在任何与 xorg 相关的环境中运行,因此不知道要使用哪个 DISPLAY。因此,如果您想将某些内容回显到像 gnome-terminal 这样的终端中,它总是会失败。应在 udev-rule-match 上执行的脚本必须在任何与 ui 相关的执行之前首先导出 DISPLAY。这是通过

export DISPLAY=:0

我想,这也是问题所在,notify-send 只会碰壁。

我实际上也在玩 udev-rules,虽然我以 root 身份运行,但我设法让它工作,类似于我的答案,这个已经在这里找到了:

https://unix.stackexchange.com/questions/80882/udev-running-a-shellscript-that-accesses-an-x-display

还有这里

Scripts launched from udev do not have DISPLAY access anymore?

您可能还想检查 zenity。对小通知很有帮助

关于linux - 从 udev 执行的通知发送不工作(在脚本中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31408021/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com