Рейтинг:1

paplay не работает из cron

флаг mx

Чуть больше года назад я написал приложение-уведомитель. (в Ubuntu 16.04.7), который воспроизводил звук с помощью paplay, а затем открывал окно с текстом уведомления. Это может быть запущено либо из командной строки, либо из cron. Недавно я установил Ubuntu 20.04.3 и обнаружил, что запуск из командной строки все еще работает, а запуск из cron — нет. У меня есть каталог bin ниже моего домашнего каталога, где хранится скрипт (remind.sh). Урезанная версия напоминания.sh выглядит следующим образом. Обратите внимание, что когда я запускаю cron, я не получаю звуковой индикации того, что сценарий запущен, но файл trace.txt обновляется, и yad создает окно.

#!/бин/баш
# скрипт напоминания, вызываемый либо из
# 1. крон или
# 2. прямо из оболочки во всплывающее окно или
# 3. gidday.sh
# создает окно 'yad' с изображением и сообщением в нем.

/usr/bin/paplay /home/gary/sounds/marimba.ogg

# отследить прогон
д=`дата`
echo "сделано -- "$d >> trace.txt

# теперь потушите окно
#
#/usr/bin/yad --borders=50 --scroll --image=/home/gary/Pictures/shrunk-pictures/${ar[$t]} --title="${ar[$t] }" --text-align=center --mouse --width=800 --height=400 --text='<span font="20">'"$txt"'</span>' 2>/dev /ноль

Извините, я должен был указать следующее в своем исходном сообщении. Строка в crontab, которая запускает скрипт напоминания1.sh:

36 13 30 авг * export DISPLAY=:0 && export MESSG="получить фильмы из библиотеки" && /home/gary/bin/remind1.sh

Как я уже говорил, все это отлично работало в Ubuntu 16.04. И это по-прежнему не объясняет, почему команда paplay не запускается, а команда (без комментариев) yad работает.

Gary Fisher avatar
флаг mx
Извините, я должен был указать следующее в своем исходном сообщении.
Gary Fisher avatar
флаг mx
Не уверен, что я делаю это правильно, но есть ли у кого-нибудь какие-либо идеи / мнения относительно того, почему paplay не работает в Ubuntu 20, но отлично работает в Ubuntu 16 ??
Рейтинг:1
флаг it

Вакансии проходят через хрон, или же системад сценарии запуска не запускаются в той же среде выполнения, что и на вашем рабочем столе. системад сценарии запуска запускаются как корень. Ни один из ваших ДОРОЖКА изменения или другие параметры переменных среды из вашего ~/.bashrc автоматически распространяются на ваш хрон работа. Например, нет $ ДИСПЛЕЙ, поэтому программы с графическим интерфейсом нуждаются в особом подходе (читай человек).

Можно установить переменные окружения для всех своих хрон рабочие места в кронтаб файл Читать человек 5 кронтаб.

Посмотрите на результаты echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== псевдоним ===";псевдоним в каждой из ваших сред.

Поскольку команда часть кронтаб строка по умолчанию интерпретируется /бин/ш, который имеет более простой синтаксис, чем /бин/баш, рекомендую иметь команда быть призывом к бить скрипт (исполняемый, смонтированный, начинается с #!/бин/баш), который настраивает среду, а затем вызывает нужную программу.

waltinator avatar
флаг it
Комментарии предназначены для НАС, чтобы задать ВАМ вопросы по вашему Вопросу. Вы должны [Изменить] свой вопрос, чтобы добавить информацию. Обновляя свой вопрос и используя кнопки форматирования, вы делаете всю информацию доступной для новых читателей. Людям не нужно читать длинную серию комментариев, чтобы понять всю историю.
Gary Fisher avatar
флаг mx
У кого-нибудь есть идеи, почему paplay не работает в моем скрипте на Ubuntu 20.04, но отлично работает на Ubuntu 16.04 ?? И чтобы обратиться к комментарию в исходном ответе, командная часть строки crontab может быть интерпретирована /bin/sh, но вызов выполняется в сценарии bash.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.