Автор Тема: звук в cron  (Прочитано 866 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн FiveFiveFive

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 26
звук в cron
« : 02 Ноябрь 2019, 11:28:02 »
Привет всему доброму сообществу.
как всегда тут пишут непонятки и вопросы. самый главный вопрос как в россии. где копать и что делать?
задача чтобы в скрипте cron под рутом проигрывался звучёк для уведомлений. сам крон работает вроде бы нормально. с ним вопросов нет. самое главное что он отробатывает, а непонятные уведомления это пока не важно. в нужном мне скрипте я написал подобное в двух вариантах.
aplay /MySound.wav или paplay /MySound.wav
и по скольку задача крона была поставлена под рутом, то в ответ тишына. вот это и есть основная проблема сейчас. соответственно я стал искать решения самостоятельно. оказалось всё не однозначно. перерыл многое перепробовал различные варианты которые предлагались во всемирной, но всё таки пришлось обращаться к более разумным. итак упращённая задача, которая почему-то не работает?
под рутом пишу crontab -e вписываю * * * * * aplay /MySound.wav &> /tmp/MyLog.txt или * * * * * paplay /MySound.wav &> /tmp/MyLog.txt и в ответ каждую минуту тишина. самое что интерестное что файл вывода пуст. тоесть он создаётся, но он пуст? ладно команда paplay, она молчащая, но ведь и от aplay тожэе ничего. хотя когда запускаещь её в терминале она отчитывается.
я подумал что проблемма в доступе к звуковой карте и поэтому попробовал поправить права. в файле /etc/group поправил строки audio:x:29:pulse,My и pulse-access:x:114: на audio:x:29:root,pulse,My и pulse-access:x:114:root. не помогло.
на убунтовских и арч форумах посоветовали определить такие переменные: PULSE_SERVER=127.0.0.1 и XDG_RUNTIME_DIR=/run/user/1000 перед вызовом команды paplay. но результат прежний. в самом терминале под рутом это всё отрабатывает, а вот в кроне вопрос?
далее я выскочил на оффицыальный сайт пулса для арч https://www.linuxsecrets.com/archlinux-wiki/wiki.archlinux.org/index.php%3Ftitle=PulseAudio&mobileaction=toggle_view_desktop.html где буквально в разделе 7.2 английскими буковками написано как запустить paplay в cron. для этого в начале надо было определить переменную XDG_RUNTIME_DIR. но я это ужэ пробовал.
у меня buster с последними обновлениями по сегодняшний день. вот что пишут логи. так как задания выполнялись каждую минуту то повторяющиеся строки я убрал чтоб не засорятся. на всех моих этапах картина примерно такая:
systemctl status cron
ноя 02 18:03:01 SrvTwo CRON[6629]: (root) CMD (/MyScript)
ноя 02 18:03:01 SrvTwo CRON[6628]: (CRON) info (No MTA installed, discarding output) # смущает вот эта строка? можэт в ней дело? но скрипт то отрабатывает.
ноя 02 18:03:01 SrvTwo CRON[6628]: pam_unix(cron:session): session closed for user root
ноя 02 18:03:01 SrvTwo CRON[6627]: (CRON) info (No MTA installed, discarding output)
ноя 02 18:03:01 SrvTwo CRON[6627]: pam_unix(cron:session): session closed for user root
grep CRON /var/log/syslog
Nov  2 18:07:01 SrvTwo CRON[6745]: (root) CMD (/MyScript)
Nov  2 18:07:01 SrvTwo CRON[6744]: (CRON) info (No MTA installed, discarding output)
Nov  2 18:07:01 SrvTwo CRON[6743]: (CRON) info (No MTA installed, discarding output)
grep -i cron /var/log/auth.log
Nov  2 18:10:01 SrvTwo CRON[6852]: pam_unix(cron:session): session opened for user root by (uid=0)
Nov  2 18:10:01 SrvTwo CRON[6852]: pam_unix(cron:session): session closed for user root
Nov  2 18:10:01 SrvTwo CRON[6851]: pam_unix(cron:session): session closed for user root
grep cron /var/log/messages
ничего не давало.
Вобщем я в потерянной прастрацыии. если уж рецепты из афицыального документа не помогают. то я точто в накдауне. надеюсь на более светлые головы чем моя...
всем откликнувшимся за ранее спасибо!
 

Оффлайн endru

  • Главный модератор
  • Ветеран
  • *****
  • Сообщений: 1985
  • Новосибирск
Re: звук в cron
« Ответ #1 : 02 Ноябрь 2019, 12:49:03 »
а можно было расписать сначала сам вопрос, а потом в оффтоп запихнуть всю вашу боль?
если в терминале работает от рута, может стоит тогда указывать полный путь до исполняемого файла? явно каких то переменных окружения не хватает. сравнивай.
 
Пользователи, которые поблагодарили этот пост: Gamliel

Оффлайн FiveFiveFive

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 26
Re: звук в cron
« Ответ #2 : 03 Ноябрь 2019, 22:26:13 »
привет всем. здравствуйте endru. я несколько разпрочитывал правила форума, но так и не понял в чём вы меня упрекнули? у меня ничего не болит. просто обратился к уважаемому сообществу с очередной проблеммой в дебиане в которой дажэ аффицыальная документацыя не помогает. "полный путь до исполняемого файла" все пути правильные. пробовал просто с командами и пробовал с прописыванием полных путей к исполняемым файлам результат прежний. "каких то переменных окружения не хватает" то что чегото не хватает это и есть данный вопрос. а вот чего и где? кто бы меня направил в нужном направлении? пробовал ещё в проигрывающих командах явно указывать устройства воспроизведения, но подобные советы с других форумов с подобной проблеммой тожэ не подошли. где бы ещё почитать и поковырять? всем всего доброго.
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1361
  • Debian, Openbox, macOS
Re: звук в cron
« Ответ #3 : 03 Ноябрь 2019, 23:22:05 »
Вам обязательно запускать звуки от root?

Покажите вывод:

sudo cat /etc/crontab
Какой строкой в cron вы запускаете свой скрипт?
 
Пользователи, которые поблагодарили этот пост: FiveFiveFive

Оффлайн FiveFiveFive

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 26
Re: звук в cron
« Ответ #4 : 04 Ноябрь 2019, 08:36:06 »
здравствуйте всем. здравствуйте ecc83. "Покажите вывод" Вот он "# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# Example of job definition:
# .- minute (0 - 59)
# | .- hour (0 - 23)
# | | .- day of month (1 - 31)
# | | | .- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
17 * * * * root cd / && run-parts -report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts -report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts -report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts -report /etc/cron.monthly )
". нет этот файл по умолчанию. его я не трогал. наверное вы бы хотели уточнить вот это.
"cat /var/spool/cron/crontabs/root" вывод
"* * * * * /home/My/Scripts/Linux/Play.sh
* * * * * bash '/home/My/Scripts/Linux/PreventPower.bash'
" последняя строка , как полагается, пуста. все пути правильные. всё перепроверил все скрипты отрабатывают нормально, за исключением вывода звука. "Какой строкой в cron вы запускаете свой скрипт" первой. "Вам обязательно запускать звуки от root?" желательно. потому как собираюсь всунуть команды управляющие сервисами и отправку самой машины в разные состояния. конечно это можно для пользователя разрешить команды с повышенными привелегиями, но просто под рутом этих повышений прав доступа удалось бы избежать. сейчас попробовал организовать эту задачу под пользователем, проверки ради. и опять тишина. странно почему не перехватывается вывод команд "&>". было бы хоть что-нибуть понятнее. а так по прежнему перенаправление вывода пусто и логи ничего полезного не сообщают. буду ковыряться дальше. всем удачи.
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1361
  • Debian, Openbox, macOS
Re: звук в cron
« Ответ #5 : 04 Ноябрь 2019, 11:54:23 »
Исправьте свой файл так:

sudo crontab -e
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/My/Scripts/Linux

* * * * * /home/My/Scripts/Linux/Play.sh 2> /tmp/MyLog.txt
#

В последней строке оставьте одну "решётку".
« Последнее редактирование: 04 Ноябрь 2019, 11:56:35 от ecc83 »
 
Пользователи, которые поблагодарили этот пост: FiveFiveFive

Оффлайн FiveFiveFive

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 26
Re: звук в cron
« Ответ #6 : 04 Ноябрь 2019, 20:04:25 »
ура! процесс пошол. двойное спасибо ecc83.
правда пока заработало под простым пользователем. под рутом по прежнему тишина. хотя с вашей помощью прогресс явный, но основной вопрос по прежнему открыт. как получить звук именно под рутом? сам скрипт play выглядет так.
#!/bin/sh
export XDG_RUNTIME_DIR=/run/user/1000
paplay --client-name=My --volume=65536 '/usr/share/sounds/555/MediaXp/Windows XP Battery Low.wav'
вот что выдаёт 2> MyLog.txt
XDG_RUNTIME_DIR (/run/user/1000) is not owned by us (uid 0), but by uid 1000! (This could e g happen if you try to connect to a non-root PulseAudio as a root user, over the native protocol. Don't do that.)
Ошибка подключения: Соединение отвергнуто
Произошла ошибка при выполнении pa_context_connect(): Соединение отвергнуто
по всей видимости команде почему-то ненравиться делать подключение под рутом по собственному протоколу. и совет так не делать. тогда вопрос, а как надо?
всем удачи.
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1361
  • Debian, Openbox, macOS
Re: звук в cron
« Ответ #7 : 04 Ноябрь 2019, 20:19:55 »
вопрос, а как надо?

Убери скрипт и запускай звуковой файл напрямую:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/My/Scripts/Linux

* * * * * aplay '/usr/share/sounds/555/MediaXp/Windows XP Battery Low.wav' 2> /tmp/MyLog.txt
#
 
Пользователи, которые поблагодарили этот пост: FiveFiveFive

Оффлайн FiveFiveFive

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 26
Re: звук в cron
« Ответ #8 : 05 Ноябрь 2019, 13:07:02 »
привет всем. большое спасибо ecc83.
"Убери скрипт и запускай звуковой файл напрямую" тогда теряется весь смысл озвучки в кроне под рутом. веть просто звуки можно и послушать под простым пользователем. а я хочу добавить звуковое оповещение к некоторым системным задачам. но за советы всё равно благодарю, потому как иммено по вашим советом проблемма ну или задача была решена вот так:
в самом скрипте пишим, без всяких лишних переменных.
#!/bin/bash
aplay звуковой файл
paplay звуковой файл
и обе команды будут петь и танцевать если под рутом в кроне написатьнекоторые дополнительные переменные .
SHELL=/usr/bin/bash # чистый шэл мне не очень подходит.
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/home/My/Scripts/Linux
XAUTHORITY=/root/.Xauthority № странная переменная, про неё я ничего не знаю.
DISPLAY=:0.0 № а это вообще непонятно, каким боком она относится к звуку, ну да ладно.
* * * * * Play.bash
всё работает нормально. если кому-то надо, не забываем благодарить отзывчевых людей! а я пошёл грызть свою старую задачу.
 

Оффлайн ecc83

  • Ветеран
  • *****
  • Сообщений: 1361
  • Debian, Openbox, macOS
Re: звук в cron
« Ответ #9 : 05 Ноябрь 2019, 13:15:04 »
"Убери скрипт и запускай звуковой файл напрямую" тогда теряется весь смысл озвучки в кроне под рутом.

Тогда убери или исправь в скрипте переменную:

Код: (txt) [Выделить]
export XDG_RUNTIME_DIR=/run/user/1000
Потому что она не соответствует пользователю root.

Удачи.
 
Пользователи, которые поблагодарили этот пост: FiveFiveFive

Теги: sound aplay palay cron 
 

Помогите плиз. Два вопроса... пропадает звук у юзера

Автор APL

Ответов: 7
Просмотров: 1884
Последний ответ 09 Июль 2011, 18:11:54
от APL
звук как на перемотке

Автор conformist

Ответов: 21
Просмотров: 3830
Последний ответ 04 Октябрь 2015, 20:47:18
от I-Jurij
Звук при удалении файлов

Автор fastroh

Ответов: 5
Просмотров: 1254
Последний ответ 02 Февраль 2020, 21:01:56
от ferum
Слабый звук в mkv

Автор Bish

Ответов: 15
Просмотров: 3195
Последний ответ 15 Май 2012, 21:12:46
от Bish
Как поставить звук на загрузку системы?

Автор Poltergeist

Ответов: 13
Просмотров: 2994
Последний ответ 22 Сентябрь 2013, 13:03:42
от ferum