在 Ubuntu 中通过 cronjob 运行 GUI 应用程序?

在 Ubuntu 中通过 cronjob 运行 GUI 应用程序?

我有一个运行“Ubuntu 10.04 Desktop”的远程服务器。我想从该服务器运行一个脚本,该脚本遍历网站列表并捕获它们的屏幕截图。

该脚本正在运行并且经过了彻底的测试。

当我通过 SSH 连接到服务器时,ssh -X user@ip-adress我可以通过调用来运行我的脚本./myscript.py,一切都会正常工作。

然后我修改了我的 crontab 文件并添加了
59 17 * * * env DISPLAY=:0 /path/to/myscript.py
......按照 Ubuntu WIKI 的建议。

我可以看到/var/log/syslog我的 cron 作业已启动,但它没有捕获任何屏幕截图。

env DISPLAY=:0 /path/to/myscript.py当我从 shell运行时
No protocol specified
myscript.py: cannot connect to X server :0

如果我不使用此选项通过 ssh 连接到服务器,-X我只会看到第二行错误:myscript.py: cannot connect to X server :0

我现在可以尝试什么?

更多细节

  • 我已经运行xhost +local:并检查了输出以xhost查看选项是否设置正确。
  • 如果我运行ls /tmp/.X11-unix/输出是X0
  • 服务器只有一个屏幕。

先感谢您!

答案1

你可能想考虑跑步財委无头 X 服务器。

答案2

您是否通过服务器上的 cron 运行脚本?

另外,当您通过 ssh 执行 X 时它不会是 :0,它将是完全不同的东西。

这在本地执行起来要容易得多,或者至少从运行 X 的机器上的 cron 本地启动。

当您登录并成功启动服务器上的脚本时,尝试echo $DISPLAY查看它被设置成什么。我的sshd_configX11DisplayOffset 10,这意味着它将是hostname:10.0

相关内容