Команда «уведомить-отправить» не работает в супервизоре

Моя операционная система - 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 с супервизором, он не показывает уведомление.


person zonzely    schedule 24.09.2018    source источник


Ответы (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')

c) в конфигурации супервизора для каждой программы

[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 .

person dzekus    schedule 05.10.2018