Cron job:如何运行需要打开显示的脚本?
- 2024-10-23 08:47:00
- admin 原创
- 74
问题描述:
我想设置一个 cron 作业来运行 python 脚本,但是它给出了这个错误:
RuntimeError: could not open display
这是因为我导入了一个需要我打开显示的模块(pylab
例如)。即使我的脚本没有生成任何图片来显示在显示器上。
有没有办法让 crontab 在打开显示器的情况下运行我的作业(就像我ssh -X
进入机器一样)?我实际上不需要为监视器生成任何图表。我只需要正确导入我的模块。
解决方案 1:
您将需要有效的 DISPLAY 和 XAUTHORITY 才能在 Cron 中使用 X-Programms!
设置 DISPLAY 非常简单,在 Bash 中输入:
export DISPLAY=":0.0"
为了获得有效的 XAUTHORITY,您必须寻找它。在 Debian/Gnome/gdm3 下,它们保存在 var/run/gdm3/*/database 中,我使用了以下脚本:
export DISPLAY=":0.0"
[ -z $USER ] && USER=$( who | awk '{ print $1 }' | sort | uniq >/tmp/test )
for I in /var/run/gdm3/*; do
AUTHUSER="`echo $I | awk -F '-' '{ print $3 }'`"
for J in $USER; do
[ "${AUTHUSER}" = "${J}" ] || continue
USER="$J"
export XAUTHORITY="${I}/database" && break
done
done
sudo -u ${USER} /Path/to/xProgramm
Var $USER 可以为空,然后脚本会寻找有效的用户,否则您可以告诉脚本 var!
解决方案 2:
xvfb
您还可以使用或类似工具在帧缓冲区中运行您的应用程序:
或者sudo apt-get install xvfb
用法:
xvfb :1 -screen 0 800x600x8 & # WIDTHxHEIGHTxCOLORDEPTH
export DISPLAY=":1"
java application_name.jar
或更短:
xvfb-run -a -e /tmp/some/log/file.log /home/user/application.run
-a
自动选择显示号码,-e file
指定错误消息的日志文件。
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD