Команда "уведомить-отправить" не работает в супервизоре
Моя операционная система 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
Но когда я выполняю скрипт python с супервизором, он не показывает уведомление.
1 ответ
Нужные переменные среды должны быть установлены (DISPLAY & DBUS_SESSION_BUS_ADDRESS). Вы можете сделать это разными способами, в зависимости от ваших потребностей, например, например,
а) для каждого подпроцесса
import os
os.system('DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send hello')
б) в сценарии глобально
import os
os.environ['DISPLAY'] = ':0'
os.environ['DBUS_SESSION_BUS_ADDRESS'] = 'unix:path=/run/user/1000/bus'
os.system('notify-send hello')
в) в конфигурации супервизора для каждой программы
[program:test_notify]
;
; your variables
;
user=john
environment=DISPLAY=":0",DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/1000/bus"
В приведенных выше примерах есть пара предположений (вы можете изменить эти параметры соответствующим образом):
- скрипт запускается как пользователь john
- UID пользователя john 1000
- уведомление появляется на дисплее:0
Чтобы запустить скрипт от имени root и показать уведомление обычному пользователю, используйте sudo, как описано в Arch wiki Desktop_notifications.