5

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

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

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

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

Есть идеи?

2 ответа2

5

Это 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 в файл, чтобы ваш сценарий мог это прочитать и экспортировать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .