【问题标题】:Zenity not working in python script with crontabZenity 不能在带有 crontab 的 python 脚本中工作
【发布时间】:2014-03-10 18:16:31
【问题描述】:

我有一个 python 脚本,我在其中使用 Zenity 来显示一些通知。代码sn-p如下:

if message_list:
    pretty_print(message_list)
    os.system("/usr/bin/zenity --notification --text='You have unread messages'")

当我正常运行此脚本时,一切正常,即出现对话框并显示消息。但是当我在 crontab 中安排这个脚本时,什么都没有出现。有什么解决办法吗?

【问题讨论】:

  • 可能不允许在您的 X11 会话上执行 cron?尝试强制以当前登录的用户身份运行。
  • @Michał 我发现了这个stackoverflow.com/questions/21414086/…。但是如何在python脚本中使用呢?

标签: python bash zenity


【解决方案1】:

cron 运行交互式命令是不明智的。不能保证有一个用户,不能保证只有一个用户,不能保证正在使用的用户想要甚至能够与您的软件交互;他们中的一些人可能是伪用户或远程访问昂贵的计量互联网或只是闲置或其他。

通常的解决方案是服务器/客户端架构,其中从 cron 运行的任何内容都通过某种 IPC 机制提供其结果,并且想要结果的用户从其 X11 会话(或 shell,或者你有什么)中运行客户端)。

【讨论】:

    【解决方案2】:

    创建一个脚本info.sh(记得授予它执行权限):

    #!/bin/bash
    xhost +
    /usr/bin/zenity --notification --text='You have unread messages'
    

    在你的脚本中:

    if message_list:
        pretty_print(message_list)
        os.system("./info.sh")
    

    如果你想使用你提到的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-14
      • 1970-01-01
      • 2015-10-25
      • 2010-10-20
      • 2017-10-27
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      相关资源
      最近更新 更多