Помогите с помощью crontab воспроизвести звук
Я хочу использовать crontab для воспроизведения записей Биг Бена каждый час, в 15.30 и 45 минут.
Пока что я использую mplayer2 и следующие задачи:
0 1,13 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_01.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_75
0 2,14 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_02.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_76
0 3,15 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_03.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_77
0 4,16 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_04.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_78
0 5,17 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_05.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_79
0 6,18 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_06.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_80
0 7,19 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_07.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_81
0 8,20 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_08.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_82
0 9,21 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_09.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_83
0 10,22 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_10.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_84
0 11,23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_11.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_85
0 0,12 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_12.ogg -volume 100 >/dev/null 2>&1 # JOB_ID_86
15 0-23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_15-1.ogg -volume 100 >/dev/null 2>&1
30 0-23 * * * mplayer -really-quiet ~/bin/bigben/Clock_Chime_15-2.ogg -volume 100 >/dev/null 2>&1
45 0-23 * * * mplayer -really-quiet ~/bin/bigben /Clock_Chime_15-3.ogg -volume 100 >/dev/null 2>&1
Но большую часть времени это не работает. Иногда он воспроизводит звук, но с задержкой. то есть. должен был играть в 21:15, а в 21:17 - нет. Я открыл терминал и проиграл другой файл с помощью mplayer, после его завершения я услышал тот, который должен был играть 2 минуты назад.
Изменить: сейчас пытается с: * * * * * "/usr/bin/mplayer -volume 100 --ao=pulse /home/myuser/bin/bigben/Clock_Chime_15-1.ogg" безуспешно.
У меня есть ощущение, что задача остается в некотором роде.
PS. Я могу поделиться звуковыми файлами.
3 ответа
Согласно этому ответу: Могу ли я использовать cron, чтобы звонить на вершине часа, как напольные часы? вам нужно экспортировать переменную окружения перед воспроизведением звуков в вашем скрипте cron:
export XDG_RUNTIME_DIR="/run/user/1000"
Поэтому вместо того, чтобы напрямую вызывать свой музыкальный проигрыватель, назовите имя скрипта в crontab как это:
0 1,13 * * * /home/ME/bin/big-ben.sh /home/ME/bin/bigben/Clock_Chime_01.ogg >/dev/null 2>&1 # JOB_ID_75
(... SNIP ...)
45 0-23 * * * /home/ME/bin/big-ben.sh /home/ME/bin/bigben/Clock_Chime_15-3.ogg >/dev/null 2>&1
- замещать
MEс вашим именем пользователя. - У вас была ошибка (пробелы после
/bigbenи раньше/Clockв последней строке вашегоcrontab, Я исправил ошибку выше. - Вы использовали
~/ярлык для/home/MEкоторыйcronне нравится Используйте полные пути вcron,
Затем создайте свой /usr/local/bin/big-ben.sh сценарий:
#!/bin/bash
export XDG_RUNTIME_DIR="/run/user/1000"
mplayer -really-quiet "$1" -volume 100
- "$ 1" - это параметр 1, переданный
crontabзапись в ваш скрипт
Не забудьте пометить исполняемый скрипт, используя:
chmod a+x /usr/local/bin/big-ben.sh
Я использую следующую команду для воспроизведения звукового файла:
aplay ~/scripts/KenbeepBent.wav
где KenbeepBent.wav это звуковой файл, который я храню в своем каталоге ~/scripts, чтобы я мог включить его в сценарии bash. Я ожидаю, что это будет соответствовать вашим потребностям.
Просто добавьте & в конце командной строки. Это заставляет программу завершить работу после ее выполнения. Это сработало для меня