【问题标题】:The command of 'notify-send' does not work in supervisor“通知发送”的命令在主管中不起作用
【发布时间】:2019-08-14 19:43:01
【问题描述】:

我的操作系统是Manjora17.1.12,Python版本是3.7.0,Supervisor的版本是3.3.4。 我有一个 python 脚本,它只显示一个通知。代码是:

import os

os.system('notify-send hello')

主管配置是:

[program:test_notify]
directory=/home/zz
command=python -u test_notify.py
stdout_logfile = /home/zz/supervisord.d/log/test_notify.log
stderr_logfile = /home/zz/supervisord.d/log/test_notify.log

但是当我使用主管执行 python 脚本时,它没有显示通知。

【问题讨论】:

    标签: supervisord notify-send


    【解决方案1】:

    需要设置适当的环境变量(DISPLAY & DBUS_SESSION_BUS_ADDRESS)。您可以根据自己的需要以多种不同的方式进行操作,例如

    a) 每个子进程

    import os
    
    os.system('DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send hello')
    

    b) 全局脚本

    import os
    
    os.environ['DISPLAY'] = ':0'
    os.environ['DBUS_SESSION_BUS_ADDRESS'] = 'unix:path=/run/user/1000/bus'
    os.system('notify-send hello')
    

    c) 在每个程序的主管配置中

    [program:test_notify]
    ;
    ; your variables
    ;
    user=john
    environment=DISPLAY=":0",DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
    

    以上示例有几个假设(您可能需要相应地更改这些设置):

    • 脚本以用户 john 身份运行
    • 用户 john 的 UID 为 1000
    • 通知出现在显示屏上:0

    要以 root 身份运行脚本并向普通用户显示通知,请按照 Arch wiki Desktop_notifications 中的说明使用 sudo。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 2019-05-28
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多