`notify-send` работает при вызове скрипта вручную, но не из crontab - PullRequest
0 голосов
/ 25 мая 2019

Я хотел, чтобы моя задача 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 означают выполнение в оболочке)

В обоих случаях я запускаю его как 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 Ответ

0 голосов
/ 25 мая 2019

Вы должны установить PATH внутри скрипта или экспортировать его из crontab!

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
...