Я хотел, чтобы моя задача cron сообщала мне на рабочем столе, когда она выполняется, с помощью команды notify-send
в Ubuntu.Я прочитал общие проблемы, которые утверждают, что сценарий оболочки не имеет доступа к дисплею, который решается путем добавления этого перед вызовом notify-send
:
export DISPLAY=:0.0
Так что я в порядке в этом отношении.
Место, где я сейчас нахожусь, это то, что мой скрипт работает и уведомляет меня на рабочем столе, если я вызываю его из терминала вручную, но не из crontab
.
Ситуация следующая:
- Сценарий, который выполняется, является файлом PHP.Команда PHP для вызова команды оболочки:
<?php
`export DISPLAY=:0.0 && command -v notify-send && notify-send "Hello world"`;
(обратные пометки в PHP означают выполнение в оболочке)
В обоих случаях я запускаю его как
root
При тестировании с терминала я запускаю:
sudo -u root /usr/bin/php -q /var/www/html/cron.php &> /dev/null
Это работает, и я получаю уведомление на рабочем столе
Чтобы отредактировать мой
crontab
для пользователя
root
, я использую:
sudo -u root crontab -e
В моем файле
crontab
моя строка такова:
* * * * * /usr/bin/php -q /var/www/html/cron.php &> /dev/null
Эта строка не выдает уведомление на рабочем столе, даже если скрипт выполняется на 100% (у меня есть успешный результат вфайлы журналов).
Что здесь не так, и почему я не получу уведомление на рабочем столе?