LINUX.ORG.RU

Плавает $DISPLAY

 


0

1

Есть задачи, которые выполняются в cron по расписанию. Это gui-приложения. Они запускаются в crontab строкой вида

00 06 * * * DISPLAY=:0 ~/myscripts/mornin.sh
(будильник, например, в скрипте вызывается плеер с определённым треком). Но иногда, не особо часто, но и не особо редко, этот расклад не срастается, потому, что команда «echo $DISPLAY» внезапно выдаёт ":1". Команда
DISPLAY=":0"
ситуацию не исправляет. Исправляет перезагрузка. Но хотелось бы подобные флуктуации исключить. Подскажите, пожалуйста, пути решения проблемы.

Спасибо за внимание.

★★★★★

Последнее исправление: piyavking (всего исправлений: 2)

Ответ на: комментарий от Adonai

всё верно, можно прямо в crontab'e устанавливать переменные выше задач, т.е. сначала переменные, а потом задачи по расписанию. Тогда им передаются значения всех заданных переменных.

Странно, что у ТС в сообщении не работает данный метод,

leader32
()

что команда «echo $DISPLAY» внезапно выдаёт ":1"

Откуда запускается эта echo? Из ~/myscripts/mornin.sh или из терминала в gui? Если из gui, что на нормальном языке означает, что X-ы запустились не на нулевом, а на первом дисплее, то, как уже посоветовали, лучше исправить скрипт, чтобы он определял на каком дисплее работают X-ы. Или вам нужно, чтобы X-ы всегда работали на нулевом дисплее?

А вобще, ИМХО, будильник не должен быть завязан на gui, пусть скрипт вызывает mplayer, и отдельный скрипт, который именно этот mplayer будет останавливать и кнопка для запуска этого скрипта в gui.

mky ★★★★★
()

Странно что вообще каким то чудом это работает. У крона свое окружение, как он пройдет авторизацию в Xauth?

Такие вещи лучше через DE решать где уже все поднято или отдельным демоном. Если от иксов отвязывать то тогда не стоит забывать еще и про авторизацию в pulse.

Hope ★★
()
Ответ на: комментарий от Adonai

Переменная сама меняется, то есть $DISPLAY становится ":0". Но при запуске задания имею «cannot open display: :0»

piyavking ★★★★★
() автор топика
Ответ на: комментарий от aol

Вот это выглядит наиболее обнадёживающе. Буду разбираться. Спасибо!

piyavking ★★★★★
() автор топика
Ответ на: комментарий от piyavking

хм... у меня в /usr/local есть папочка scripts
я туда кладу скрипты
и закидываюх их в crontab
так же у меня scripts в PATH (/etc/environment)
сделаей скрипт crontab
и пропиши туда
#!/bin/sh
#crontab | force DISPLAY :0
DISPLAY=:0
export DISPLAY
#___________
дальше пиши свои комманды для запуска
добавь скрипт в /etc/crontab

ubuntuawp ★★
()
Ответ на: комментарий от piyavking

объясняю, в скрипте тебе нужно знать активный X-экран, я дал команду, которая выводит активный X-экран, теперь догадаешься?

lazyklimm ★★★★★
()
Ответ на: комментарий от piyavking

cron ничего не об окружении иксов, и, как следствие, о его DISPLAY, а тебе нужно чтобы знал

короче, я больше не буду ничего писать, и так разжевал сколько мог ///_-

lazyklimm ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.