используя уведомление или отправку или zenity в Cron

4803
quack quixote

Я пытаюсь заставить cron выдавать предупреждение на экране, когда он обнаруживает конкретную ситуацию. Я знаю, что скрипт выполняется каждую минуту, но он не будет отображаться на экране.

Выполненный скрипт:

DISPLAY=:0.0 /usr/bin/notify-send -t 1000 Test "This is a test" 

Запуск Gnome из дистрибутива Mandriva.

Есть идеи?

5
Еще один способ сделать это http://unix.stackexchange.com/questions/28463/run-a-dbus-program-in-crontab-how-to-know-about-the-session-id akond 12 лет назад 0

2 ответа на вопрос

5
dubiousjim

Это crontab вашего пользователя, а не root?

Я бы предложил, по крайней мере для отладки, создать скрипт, как описывает Джон Т:

* * * * * /path/to/script.sh 

Вот как может выглядеть скрипт:

#!/bin/bash { echo "trying to notify at $(date)" DISPLAY=:0.0 /usr/bin/notify-send -t 1000 Test "This is a test" echo "finished notify at $(date)" } > /path/to/your-notify-debug.log 2>&1 

Обратите внимание, что перед DISPLAY нет ":", как вы, похоже, задали в своем вопросе. Обязательно сделайте этот скрипт исполняемым ( chmod +x /path/to/script.sh) и позвольте cron попытаться запустить его несколько раз. Затем изучите, что было записано в лог-файл.

3

Вы должны иметь возможность подключиться к шине сеанса пользователя DBUS. Это должна быть шина сеанса, а не системная шина. Вы можете найти это, сделав

установить | grep DBUS_SESSION_BUS_ADDRESS

тогда в вашем скрипте нужно иметь

export DBUS_SESSION_BUS_ADDRESS =

тогда сделай свое уведомление-отправь

Поскольку сессионная шина меняется каждый раз, когда вы входите в систему, вы можете захотеть добавить что-то в свои сценарии входа, чтобы записать DBUS_SESSION_BUS_ADDRESS в файл, чтобы ваш сценарий мог это прочитать и экспортировать.

Возможно, он уже был сохранен в файл. Попробуйте использовать это в начале вашего скрипта: if [[-z "$ DBUS_SESSION_BUS_ADDRESS"]]; затем источник "$ HOME / .dbus / session-bus" / * - 0 && export DBUS_SESSION_BUS_ADDRESS; фи dubiousjim 14 лет назад 2

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