Почему не делает работы dzen2 при вызове через в?

Можно использовать batch программа, которая является частью в пакете (инструменты для организации очередей задания). Это установлено по умолчанию во многих системах.

3
11.05.2012, 04:18
1 ответ

Программа, которая составляет at задание является ребенком atdдемоне) процесс, не оболочки, куда Вы работаете at. Таким образом, это не наследовало среду текущей оболочки. at система располагает скопировать среду (и рабочий каталог и некоторые более неясная вещь), но это опускает несколько переменных.

В частности, DISPLAY переменная не копируется в в задании. Эта переменная говорит все X программ, которые отображаются для соединения с. Без X дисплеев dzen2 не знает, где открыться уведомление. В удаляет DISPLAY потому что это обычно используется для пакетных заданий, которые не производят терминального или вывода графических данных.

notify-send работы, потому что это не соединяется с X-сервером: это использует D-шину для соединения с демоном, который привязан X сессиям.

Можно заставить dzen2 работать путем явного копирования DISPLAY переменная:

echo "export DISPLAY=$DISPLAY;" 'echo hello | dzen2 -p' | at now + 42 minutes

Вероятно, что dzen2 производит сообщение об ошибке (стандартное сообщение Can't open display:). Любой выходной сигнал или сообщение об ошибке, произведенное в задании, отправляются местной почтой (точно как для заданий крона). Проверьте свою местную почту.

6
27.01.2020, 21:14
  • 1
    Gilles к спасению. Неудивительно, что у Вас есть 87k репутация! Я знаю, что Вы сохранили меня по больше, чем нескольким моих собственных вопросов. Ползунки до Вас, человека, и еще раз спасибо. –  Cory Klein 11.05.2012, 18:22

Теги

Похожие вопросы