Я пытаюсь заставить крон обеспечивать экранное предупреждение, когда он определяет конкретную ситуацию. Я знаю, что сценарий выполняется каждую минуту, но он не отобразится на экране.
выполняемый сценарий:
DISPLAY=:0.0 /usr/bin/notify-send -t 1000 Test "This is a test"
Рабочий Gnome от распределения Mandriva.
Какие-либо идеи?
crontab этого Вашего пользователя, не crontab корня?
Я предложил бы, чтобы, по крайней мере, для отладки, Вы создали сценарий, как John T описывает:
* * * * * /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
Обратите внимание, что существует нет ":" перед ДИСПЛЕЕМ, поскольку Вы, кажется, имеете в своем вопросе. Обязательно сделайте этот исполняемый файл сценария (chmod +x /path/to/script.sh
) и позвольте крону попытаться выполнить его несколько раз. Затем исследуйте то, что было записано в файл журнала.
Необходимо смочь соединиться с шиной сеанса пользователя DBUS. Это должно быть шиной сессии не системная шина. Можно найти это путем выполнения a
набор | grep DBUS_SESSION_BUS_ADDRESS
затем в Вашем сценарии Вы должны иметь
экспортируйте DBUS_SESSION_BUS_ADDRESS = {независимо от того, что это}
затем сделайте Ваш уведомлять - отправляют
Так как шина сессии изменяется каждый раз, когда Вы входите в систему, Вы могли бы хотеть добавить что-то к своим сценариям входа в систему для записи DBUS_SESSION_BUS_ADDRESS в файл, таким образом, сценарий может считать это в и экспорт это.