XRandR 脚本从命令行正确运行,作为 cron 作业失败

XRandR 脚本从命令行正确运行,作为 cron 作业失败

我在 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

相关内容