我有一个运行“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_config
有X11DisplayOffset 10
,这意味着它将是hostname:10.0