【发布时间】:2018-11-22 21:55:20
【问题描述】:
我可以在 99-monitor-hotplug.rules 中获取这条 udev 规则来触发:
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1",
RUN+="/usr/local/bin/monitor-hotplug.sh"
但我似乎无法让它在 monitor-hotplug.sh 脚本中触发 OpenCV GUI 应用程序。
我从根本上理解 udev 规则以 root 身份运行,但无论我尝试什么语法,我都无法让它在用户级别正常运行以运行应用程序(运行应用程序的实际脚本工作正常)。
我试过在 RUN 这种格式下:
su - your_X_user_here -c 'export DISPLAY=:0; bash -c "/path/to/script.sh"'
带脚本:
#!/bin/bash
#sleep 5
date >> /var/log/opencvlog.log
cd ~/Downloads
./displayimage /home/<username>/Pictures/picture.png
>/var/log/application.log
2>&1
另一个尝试:
将 99-monitor-hotplug.rules 添加到当前语法中:
ACTION=="change", SUBSYSTEM=="drm", ENV{DISPLAY}=":0",
ENV{XAUTHORITY}="/home/<username>/.Xauthority" ENV{HOTPLUG}=="1",
RUN+="/usr/local/bin/monitor-hotplug.sh"
然后在实际脚本中:
export DISPLAY=:0
export XAUTHORITY=/home/<username>/.Xauthority
cd ~/Downloads
date
./displayimage /home/<username>/Pictures/picture.png
这些都不起作用,有什么想法可以让它起作用吗?
谢谢
【问题讨论】:
标签: linux ubuntu linux-device-driver udev hotplugging