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

sal*_*ace 3 cron xrandr lxde

我在 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
Run Code Online (Sandbox Code Playgroud)

这在终端窗口中运行没有问题,但作为 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 (无法打开显示)

god*_*eek 5

xrandr 需要$DISPLAY变量集来告诉它它正在操纵哪个 X 会话,而这不是在 cron 环境中设置的。

xrandr 可能正在处理您的默认本地 X 会话,或者您通过startx从 TTY运行开始的第二个会话,或者通过 SSH 转发到远程显示的会话,或者使用 Xnest 在另一个会话中运行的嵌套 X 会话等。如果没有$DISPLAY环境变量(或--display命令行参数),它通常无法知道要连接到哪个会话,因此它会退出。

例如,以下命令可能会解决您的问题:

DISPLAY=:0 /home/user/screens.sh
Run Code Online (Sandbox Code Playgroud)