`notify-send` работает при вызове скрипта вручную, но не из crontab
Я хотел, чтобы моя работа 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% (у меня есть успешный результат в лог-файлах).
Что здесь не так, и почему я не получу уведомление на рабочем столе?
1 ответ
Вы должны установить PATH внутри скрипта или экспортировать его из crontab!
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin