2

Я хочу запустить MPlayer через SSH и позволить ему работать (я фанат радио). Для этого я использую SSH на своей удаленной машине (Cubietruck под управлением LUbuntu) и выдаю следующую команду:

screen mplayer -playlist .path/to/the/playlist

Все работает как положено, но когда я выхожу из сеанса SSH, музыка полностью останавливается. После входа в систему я больше не могу найти свой экземпляр экрана (screen -ls говорит, что в /var/run/screen/ не найдено ни одного сокета)

Я использовал экран с другим приложением (например, rTorrent), и все работало нормально. Это специфическая проблема MPlayer?

Обновление: причина, по которой я использую экран, и я не собираюсь идти по пути "nohup", заключается в том, что я хочу повторно получить доступ к экземпляру mplayer (изменить станцию, изменить список воспроизведения и т.д.)

2 ответа2

2

Вот ваша команда:

screen mplayer -playlist .path/to/the/playlist

Использование screen кажется излишним. Для того, чтобы запустить обрабатывается непрерывно в фоновом режиме на машине Linux при входе из терминальной сессии, я рекомендую использовать nohup и & как это:

nohup mplayer -playlist .path/to/the/playlist &

nohup означает «не вешать трубку», что означает, что вы можете выйти из сеанса терминала, и команда после nohup продолжит работу. Использование команды & in shell в основном означает «взять предыдущую команду и запустить ее как фоновую задачу». Поэтому, если вы объединяете эти два параметра, вы в основном говорите: «Запустите следующую команду, даже если я выйду из терминала и запустите ее как фоновую команду, чтобы у моего сеанса снова был доступ к терминалу».

0

Вы должны взглянуть на: http://www.tuxradar.com/content/command-line-tricks-smart-geeks

Интересный бит:

Пульт дистанционного управления MPlayer

В этом мире есть два типа людей: те, кто считает MPlayer лучшим медиаплеером в истории существования, и те, кто ошибается. Одна из менее известных функций MPlayer - это возможность управлять им из консоли, из сценария оболочки или даже по сети. Секрет этого трюка в опции -slave MPlayer, которая говорит программе принимать команды из потока stdin вместо нажатия клавиш. Объедините это с опцией -input, и команды будут считаны из файла или из FIFO. Например, попробуйте это в одном терминале:

mkfifo ~/mplayer-control mplayer -slave -input file =/home/user/mplayercontrol filetoplay

Затем в другом терминале или из скрипта введите:

echo "pause"> ~/mplayer-control

Эта команда приостановит текущий запущенный MPlayer, и повторный ввод команды возобновит воспроизведение. Обратите внимание, что вы должны указать полный путь к управляющему файлу для MPlayer, с /home/user и т.д., Потому что ~/mplayer-control один не будет работать. Существует множество других команд, которые вы можете отправить в MPlayer - действительно, любая операция с клавиатурой в программе вызывает команду, которую вы можете использовать в вашем скрипте управления. Вы даже можете управлять MPlayer с другого компьютера в сети, используя SSH или Netcat. Смотрите этот пример:

ssh user @ host "echo pause> mplayer-control"

Здесь мы регистрируемся на удаленном компьютере (хосте) с именем пользователя user и запускаем команду для отправки паузы в управляющий файл MPlayer удаленного компьютера. Конечно, это можно сделать намного быстрее, если у вас включена аутентификация по ключу SSH, так как вам не нужно каждый раз вводить пароль.

Если вы запускаете MPlayer в подчиненном режиме, как они упоминают здесь, не должно иметь значения, что делает консоль: MPlayer должен оставаться в фоновом режиме, наблюдая за этим входным файлом для его команд, а не за окном терминала, которое его вызвало.

Последнее замечание: они говорят, что делать бла из другого терминала, просто чтобы показать, что он действительно работает по сети, пока вы редактируете указанный файл, поскольку они показывают, что не имеет значения, редактируется ли файл на той же машине или другом, все, что имеет значение MPlayer отслеживает этот файл на наличие любых команд, помещенных в него, а затем воздействует на то, что команда просит его сделать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .