我在 Fedora 21 上运行 LXDE。我的脚本的目的是跨两个显示器扩展显示:
#!/bin/sh
xrandr --output VIRTUAL1 --off --output LVDS1 --mode 1440x900 --pos 1280x124 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
它从终端窗口运行没有问题,但作为一个 cron 作业会被阻塞。
从我的 cron 日志:
Jul 9 20:14:01 localhost CROND[19494]: (user) CMD (/home/user/screens.sh)
Jul 9 20:14:01 localhost CROND[19492]: (user) CMDOUT (无法打开显示)
答案1
xrandr 需要$DISPLAY
设置变量来告诉它正在操作哪个 X 会话,而该变量未在 cron 环境中设置。
xrandr 可能正在处理您的默认本地 X 会话,或者您通过startx
从 TTY 运行启动的第二个会话,或者通过 SSH 转发到远程显示的会话,或者使用 Xnest 等在另一个会话中运行的嵌套 X 会话。如果没有$DISPLAY
环境变量(或--display
命令行参数),它通常无法知道要连接到哪个会话,因此它会退出。
例如,以下命令可能会解决您的问题:
DISPLAY=:0 /home/user/screens.sh