на Ubuntu 8/9 се опитвам да напиша демон в python, който следи определено състояние на мрежата и информира потребителя с помощта на gtk.messagedialog. Инсталирах този скрипт с помощта на rc-update. Демонът стартира при зареждане, но не показва диалоговия прозорец дори след като вляза. Предполагам, защото init.d стартира моя демон на tty1 и няма наличен gnome. Опитах да стартирам диалоговия прозорец чрез подпроцес, но изглежда, че наследява същата среда за изпълнение. Коя е най-добрата практика за подобни неща.
Процес на Python / Linux/ Daemon се опитва да покаже gtk.messagedialog
Отговори (3)
Ако петима потребители са влезли в X сесии, кой получава съобщението? Всеки?
Ако някой е влязъл локално, но използва само tty, а не X11, трябва ли да види съобщението?
Ако някой е влязъл дистанционно чрез ssh -X, за да стартира графично приложение на собствената си система извън вашия процесор, трябва ли да види съобщението? Как бихте им го донесли?
Linux е твърде гъвкав за настоящия ви подход. Стандартният начин да направите това е всеки потребител, който се интересува от вида на съобщението, което изпращате, да стартира приложение, което получава съобщението и го показва по начин, който той избере. Dbus е популярен начин за настройка на процеса на съобщения. По този начин отдалечените потребители или потребителите, влезли само с TTY режим, все още имат опция за виждане на съобщението.
За да разберете дали вашият код изобщо работи, трябва първо да опитате да изпълните демона като нормална програма в графична обвивка (на работния плот на GNOME).
Можете също да извикате zenity.
Можете да използвате notify-send
(от пакет libnotify-bin
), за да изпращате известия до потребители на настолни компютри от вашия демон.