'notify-send' 的命令在 supervisor 中不起作用
The command of 'notify-send' does not work in supervisor
我的操作系统是 Manjora17.1.12
,Python 版本是 3.7.0
,主管的版本是 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
但是当我用supervisor执行python脚本时,它没有显示通知。
需要设置适当的环境变量(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。
我的操作系统是 Manjora17.1.12
,Python 版本是 3.7.0
,主管的版本是 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
但是当我用supervisor执行python脚本时,它没有显示通知。
需要设置适当的环境变量(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。