LinuxForum.Fans
Тема

Воспроизведение музыки с помощью totem через cron по расписанию

Автор: 5artizan 19 сообщений 1545 просмотров
03.06.2019 16:20 #431992

Доброго времени суток всем. :) Появилась необходимость на компьютере с Ubuntu 16.04 проигрывать mp3-файл по расписанию.Файл необходимо запускать каждую неделю в среду,четверг,пятницу и субботу в 18:15 и в воскресенье в 17:15.
Для проверки попробовал проигрывать mp3-файл каждую минуту. Для этого через crontab добавил следующую строку:

text
* * * * * export DISPLAY=:0.0 && totem ~/try/notif.mp3

Файл проигрывается каждую минуту с задержкой где-то 8 секунд и после Totem остается запущенным.Через минуту открывается еще одно окно проигрывателя Totem.Как сделать так чтобы после проигрывания окно Totem закрывалось и не было таких больших задержек?Или может предложите более легкий вариант проигрывания музыкальных файлов по расписанию в Ubuntu 16.04?

04.06.2019 05:31 #431998

:) Нет, всё верно. Расписание задаётся через таблицы cron. В правиле просто допишите закрытие программы
типа этого: _http://rus-linux.net/MyLDP/consol/kill.html

04.06.2019 10:01 #431999

Wolfenberg, изменил ссылку. На этот ресурс у нас ссылки не отрабатывают :) .

04.06.2019 10:56 #432001

Это совсем не верно!
Запускать задание cron, использующее внешний X сервер -- это авантюра. Во-первых, он может быть вообще не запущен. Но даже запущенный может посторонним клиентам отказать, если включена авторизация. А приличные DE её как раз включают.
Тем более использовать графику там, где она не нужна. Тут нужен какой-нибудь mpg123 или даже aplay. Правда, тут будут свои грабли, если звуковая карта уже занята.

04.06.2019 11:32 #432003
"s.xbatob" написал:
Это совсем не верно!

Вы, мягко говоря, не правы. Ваши соображения верны в общем случае, но у ТС вполне конкретный случай. И X-сервер у него запущен и авторизация не требуется.
Все что ему нужно: после проигрывания мелодии дать команду:

text
killall totem
04.06.2019 12:09 #432004

Проверяю:
[console][xbatob@pink ~]$ ssh debian-9
xbatob@debian-9's password:
xbatob@debian-9:~$ export DISPLAY=:0
xbatob@debian-9:~$ xterm
Invalid MIT-MAGIC-COOKIE-1 keyxterm: Xt error: Can't open display: :0
xbatob@debian-9:~$ xterm
[/console]
В первом случае было приглашение от sddm
Во втором я зашёл с тем же именем - и xterm запустился

пытаюсь запустить от другого юзера:
[console][xbatob@pink ~]$ ssh tomas@debian-9
tomas@debian-9's password:
tomas@debian-9:~$ export DISPLAY=:0
tomas@debian-9:~$ xterm
No protocol specified
xterm: Xt error: Can't open display: :0
tomas@debian-9:~$
[/console]
Ещё и диагностика неинформативная

Так что -- авантюра.

04.06.2019 14:15 #432008

+1 к mpg123. Но можно и mplayer, дело вкуса. Totem в данном случае не нужен, он, кстати, львиную долю задержки вносит.

04.06.2019 14:31 #432010
yars написал:
+1 к mpg123. Но можно и mplayer, дело вкуса. Totem в данном случае не нужен, он, кстати, львиную долю задержки вносит.

Главное, что он вносит лишнюю зависимость, причем совсем не используемую.
На самом деле хотелось бы знать для чего все это надо. Если киоск — одно, сервер — другое, рабочая станция — третье.Но в любом случае однозначного решения нет.

05.06.2019 11:27 #432027

Для VLC хватит и этого, будет работать в фоне.

text
cvlc --play-and-exit ~/try/notif.mp3 &>/dev/null &

пример взялл отсюда

05.06.2019 12:12 #432028

"i2ks" написал:
пример взялл отсюда
А мне там особенно понравился пример с play из пакета SOX
[console]play -q /path/to/file.mp3[/console]
Проще не придумаешь)))
05.06.2019 12:15 #432029

Ещё можно использовать ffplay из пакета ffmpeg
Но грабли с конкурентным доступом к аудиоустройству это не обходит. Только до них ещё добраться нужно.

05.06.2019 12:18 #432030

"s.xbatob" написал:
грабли с  конкурентным доступом к аудиоустройству
А какие там грабли могут быть с пульсой? (вопрос НЕ риторический ;) )
05.06.2019 18:13 #432031
"DiabloPC" написал:
А какие там грабли могут быть с пульсой?

Грабли в том, что этот слой появился не от хорошей жизни.
драйвер же позволяет только то, что умеет устройство. А они нынче стали совсем тупыми: одно открытие, одна частота, один формат... Зато умеют разбросать звук на 8 каналов (интересно, это кроме игрушек где-то ещё используется?)
Да и вообще цифровое микширование -- вопрос совсем неоднозначный.

05.06.2019 18:43 #432032

Всем спасибо за ответы!)))Помог вариант с mplayer. В скрипте следующие:

text

#!/bin/bash
mplayer ~/Музыка/music.mp3

И через crontab добавил следующие:

text

15 18 * * 3,4,5,6 ~/try/script.sh
15 17 * * 7 ~/try/script.sh
07.06.2019 13:36 #432047

Зачем скприпты, когда можно так:

text

15 18 * * 3,4,5,6 mplayer $HOME/Музыка/music.mp3
15 17 * * 7 mplayer  $HOME/Музыка/music.mp3

p.s. и лучше отходить от конструкции

text

#!/bin/bash

в сторону

text

#!/usr/bin/env bash
07.06.2019 14:55 #432048
"i2ks" написал:
в сторону

#!/usr/bin/env bash

...особенно в заданиях cron, у которого $PATH /usr/bin:/bin, которые нынче ещё одно и то же :)

И вообще запускать скрипт через env -- это лишний повод нарваться

07.06.2019 15:04 · отредактировано #432049

"s.xbatob" написал:
И вообще запускать скрипт через env -- это лишний повод нарваться
нарваться на что? если бордак в системе, то можно и космических фей и единорогов в итоге получить.
13.06.2019 16:48 #432088
"i2ks" написал:
p.s. и лучше отходить от конструкции

#!/bin/bash
в сторону

#!/usr/bin/env bash

А можно пожалуйста поподробней почему именно так следует поступать? *SCRATCH*

13.06.2019 17:30 #432089
"lone_wolf" написал:
А можно пожалуйста поподробней почему именно так следует поступать? 

Со временем к этому пришел, конечно это не панацея и не таблетка от всех болезней, но во многом данный метод решает большую часть задачь. Да и в документации/справочниках и т.д., всё больше и больше можно увидить данный метод(взять например тот же python или perl). Не много информации и в чем различия, здесь посмотрите.

Войдите или зарегистрируйтесь, чтобы ответить.