Как я могу показать сообщения notify-send, запускаемые crontab? [дубликат]

test.sh: / usr / bin / notify-send "test"

Следующие действия работают: bash ~ / Documents / test.sh

НО crontab никогда не показывает уведомление. Почему?

* / 1 * * * * bash ~ / Documents / test.sh

5
задан 11 January 2019 в 09:00

2 ответа

Чтобы запустить любое приложение, связанное с графическим интерфейсом пользователя, из Cron, вы должны экспортировать несколько переменных среды рабочего стола. Нижеприведенное решение основано на этом ответе , где представлены более подробные сведения.

Как запустить любое связанное с графическим интерфейсом приложение из crontab в Ubuntu 16.04, 17.10, 18.04 и других дистрибутивах Ubuntu с помощью Gnome

Создайте сценарий запуска, который экспортирует переменные среды рабочего стола и запустит ваше приложение. Назовем его gui-launcher . Его содержимое должно быть ( referencs: [1], [2] and [3]):

#!/bin/bash -e

# NAME: gui-launcher

# Check whether the user is logged-in
while [ -z "$(pgrep gnome-session -n -U $UID)" ]; do sleep 3; done

# Export the current desktop session environment variables
export $(xargs -0 -a "/proc/$(pgrep gnome-session -n -U $UID)/environ")

# Execute the input command
nohup "$@" >/dev/null 2>&1 &

exit 0
  • Для других сред рабочего стола измените gnome-session в этой части $ (pgrep gnome -session -n -U $ UID) с именем процесса используемого DE, например mate-session . Список наиболее распространенных операционных систем Ubuntu представлен здесь . Реализация того же сценария в Lubuntu - здесь . Сценарий можно использовать для запуска приложения с графическим интерфейсом пользователя из сеанса TTY или SSH в сеансе рабочего стола текущего пользователя.
  • Сделайте файл исполняемым: chmod + x gui-launcher .
  • Скрипт будет работать до тех пор, пока пользователь вошел в систему, включая заблокированный экран.
  • Пожалуйста, не изменяйте и не запускайте сценарий от имени пользователя root. Это может быть вредно для системы!

Затем используйте его в crontab следующим образом:

*/1 * * * * /full/path/to/gui-launcher "/full/path/to/the-targer-application"

Вот как это работает в Ubuntu 17.10 на Wayland:

enter image description here


5
ответ дан 11 January 2019 в 09:00

Среда для cron и вашего обычного пользователя может отличаться.

Когда вы используете какие-либо скрипты в cron, лучше указать полный путь к ним.

1
ответ дан 11 January 2019 в 09:00

Другие вопросы по тегам:

Похожие вопросы: