【问题标题】:Send display to user from a root job从根作业向用户发送显示
【发布时间】:2017-08-23 06:22:48
【问题描述】:

我有一份以 root 权限从 crontab 开始的工作。该作业应在一段时间后显示弹出消息。工作在 python 中并使用 MessageBox 工具包。

使用 roit,工作正常,5 分钟后,我看到了消息框。 问题是,如果我以用户身份登录,我可以在任务列表中看到正在运行的作业,但弹出窗口不起作用(可能是因为作业的显示是根用户而不是用户)。

我找不到更改此作业以使用当前 ligin 用户的显示的方法。

有没有办法改变这个,让用户看到弹出窗口?

谢谢。

【问题讨论】:

  • 您是否尝试设置 DISPLAY 变量?
  • 您是否尝试过完成您的任务?你试过什么?你能发一个minimal, verifiable, complete example吗?
  • @bracco23。在 cron 中运行的 python 作业有一个 5 分钟后弹出的消息框。当我以 root 身份登录时,它可以工作。当我以 user1 身份登录时,我可以看到作业正在运行,但消息框没有。所以我正在努力完成我的任务,但不知道如何。
  • 我编辑了帖子以添加更多信息@piarston
  • 您可以发布您尝试过的相关代码吗? minimal reproducible example 很有帮助。

标签: python linux root


【解决方案1】:

MessageBox 不会弹出,因为 cron 作业在未设置 DISPLAY(环境变量)的环境中运行。与其让 cron 直接运行你的 python,不如让它围绕它运行一个简单的包装器:

#!/usr/bin/env bash
export DISPLAY=':0'
python /path/to/your/python/program.sh

或者,如果您确信它不会干扰其他 cron 作业,您可以添加 DISPLAY=:0 作为您的 crontab 的第一行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 2015-05-09
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多