当前位置: 首页 > 面试题库 >

Cron工作:如何运行需要打开显示的脚本?

陶富
2023-03-14
问题内容

我想设置一个cron作业来运行python脚本,但是它给了我这个错误:

RuntimeError: could not open display

这是因为我导入了一个需要打开显示的模块(pylab例如)。即使我的脚本不会生成任何图片来显示在监视器上。

有什么方法可以让crontab在显示打开的情况下运行我的作业(就像我ssh -X进入机器一样)?我实际上不需要为监视器生成任何图形。我只需要正确导入模块即可。


问题答案:

您将需要有效的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!



 类似资料:
  • 问题内容: 这可能是一个非常简单的问题,但是如何每两天在我的fedora dist上运行一个python脚本? 谢谢 安东尼斯 问题答案: 这是关于cron的问题。首先是在python脚本顶部添加SHEBANG行。 使您的脚本可执行 然后执行crontab -e并添加

  • 问题内容: 很简单,我有要每月执行一次的节点脚本。 但这是行不通的,大概是因为该命令正在运行的路径或外壳。我尝试了以下通过cron执行节点的方法(已通过-v测试): 我没办法尝试了,有什么建议吗? 问题答案: 只需提供cron作业中node的完整路径即可,例如:

  • 问题内容: 我想通过cron运行一项工作,该工作将在一天中的指定时间每隔第二个星期二执行一次。每个星期二都很容易: 但是,如何在“每隔第二个星期二”(或者,如果您愿意,每隔第二周)进行一次?我不想自己在脚本中实现任何逻辑,而是仅将定义保留在cron中。 问题答案: 怎么样呢,即使没有在前五个字段中完全定义它,它也会保留它:

  • 我想使用CronJob在Kubernetes内部运行一个shell脚本,下面是我的CronJon.yaml文件: CronJob已被创建(kubectl apply -f CronJob.yaml)当我获得CronJob的列表时,我可以看到cron job ( kubectl get cj ),当我运行“kubectl get pods”时,我可以看到pod正在被创建,但是pod崩溃了。谁能帮我学

  • 问题内容: 我想做一个cron作业,每隔15分钟发送一次邮件,从数据库表中获取数据。在node js中,我可以执行cron作业,但是通过PM2,我不了解代码的放置位置及其工作方式。 问题答案: 谢谢您的回答; 我以这种方式做,只是设置电子邮件 npm安装节点crontab 2. var crontab = require(’node-crontab’); var jobId = crontab.s

  • 我有一个带有各种WP-CLI命令的bash脚本,可以运行备份、检查和优化数据库表、运行安全漏洞检查、检查可用的核心、插件和主题更新,然后通过电子邮件将报告发送给我。 如果我从命令行运行这个脚本,它可以完美地工作。但是,如果我调度一个cronjob,脚本将运行,但是所有WP命令的输出如下: /usr/local/bin/dev-maintention-check.bash:第70行:wp:comma