`notify-send` работает при вызове скрипта вручную, но не из crontab

Я хотел, чтобы моя работа cron сообщала мне на рабочем столе, когда она выполняется, через notify-send команда на Ubuntu. Я прочитал общие проблемы, которые утверждают, что сценарий оболочки не имеет доступа к дисплею, который решается путем добавления этого перед вызовом notify-send:

export DISPLAY=:0.0

Так что я в порядке в этом отношении.

Место, где я сейчас нахожусь, это то, что мой скрипт работает и уведомляет меня на рабочем столе, если я вызываю его из терминала вручную, но не из crontab,

Ситуация выглядит следующим образом:

  1. Сценарий, который выполняется, является файлом PHP. Команда PHP для вызова команды оболочки:
<?php
`export DISPLAY=:0.0 && command -v notify-send && notify-send "Hello world"`; 

(обратные галочки в PHP означают выполнение в оболочке)

  1. В обоих случаях я запускаю его как root
  2. При тестировании с терминала я запускаю:
sudo -u root /usr/bin/php -q /var/www/html/cron.php &> /dev/null

Это работает, и я получаю уведомление на рабочем столе

  1. Редактировать мой crontab для root пользователь, я использую:
sudo -u root crontab -e
  1. В моем 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
Другие вопросы по тегам