Имеется такой вот скрипт, для теста:
#!/usr/bin/bash
notify-send "Hi there!"
Давно не пользовался cron. Как-то не сложилась у меня с ним судьба — уже создавал когда-то тему с подобной проблемой, но так и не отложилась логика поведения, нет чёткого понимания до сих пор. Есть вещи, которые понятны как дважды-два, а есть … как кот Шрёдингера — то ли живым считать, то ли мёртвым, не поймёшь: ведь, по идее, он мёртв, потому что живой, когда умер, будучи ещё живым.
Если бы не старая тема, бился бы ещё долго головой об интернет, чтобы понять, в чём проблема. Хорошо, понятно, что нужно было добавить глобальную переменную $DISPLAY в cron-запись:
50 11 * * * DISPLAY=:0 /home/pushistiq/Desktop/my-cron.job
Без этой переменной, скрипт не отрабатывается, уведомление «Hi there!» не появляется. Это первая странность, которую я хотя бы как-то могу ещё объяснить тем, что, якобы, скрипт запускается от другого пользователя, с другим графическим окружением, несмотря на то, что и пользователя указывал:
50 11 * * * pushistiq /home/pushistiq/Desktop/my-cron.job)
— так тоже не работает, пока не добавишь DISPLAY.
Пришла мысль: а может под текущим пользователем другой $DISPLAY? Но нет, если в терминале набрать команду «echo $DISPLAY» - показывает тот же :0
Это первая странность.
Вторая странность. Разный внешний вид уведомлений. Если запускать скрипт из терминала, то появляется уведомление вверху посередине такого вида. А если срабатывает cron (c указанием DISPLAY, естественно), то уведомление появляется такого вида с правого края экрана.
Почему это всё странно? Потому что куча страниц по настройке cron через crontab заявляют, что всё работает без DISPLAY. Я ни одного руководства не увидел с указанием DISPLAY. Может это только для уведомлений? Не знаю. Но всё это так неочевидно. Да ещё этот разный вид уведомлений … мистика.