当运行与显示相关的命令时,类似的命令似乎xrandr
只有在作为本地用户运行时才起作用。
但是,当通过 udev 规则以本地用户身份运行脚本时:
SUBSYSTEM=="drm", ACTION=="change", RUN+="su -l --shell=/bin/bash -c /opt/echo-foo.sh chris"
定义为echo-foo.sh
:
#!/bin/bash
echo "foo"
准备udev
调试:
udevadm control --log-priority=debug
journalctl -f # tail the logs
udev
插入/拔出显示器时出现以下错误:
Starting 'su -l --shell=/bin/bash -c /opt/echo-foo.sh chris'
Sucessfully forked off '(spawn)' as PID #####
Process 'su -l --shell=/bin/bash -c /opt/echo-foo.sh chris' failed with exit code 1.
但是,从 root 开始,该命令可以工作。有没有正确的方法来做到这一点,而我遗漏了一些细节?
其他详情:
-rwxr-xr-x root root 3.3K ... /opt/echo-foo.sh
-- 3.3K:我的真实脚本被注释掉了。