Убейте и перезапустите процесс Linux, если он выводит какое-то ключевое слово

Я использую VLC для потоковой передачи видео на удаленный сервер. К сожалению, иногда соединение теряется, и мне нужно убить и перезапустить VLC, чтобы он снова заработал.

Сложность в том, что VLC не возвращается при возникновении ошибки. Он печатает ошибку на терминале, но продолжает работать.

Я хотел бы создать скрипт, который запускает VLC, отслеживает его вывод и убивает, а затем перезапускает его при отображении ошибки.

Как это сделать?

Спасибо


person fdamien12    schedule 22.04.2021    source источник
comment
Это может вам помочь: stackoverflow.com/questions/157163/   -  person Marc Sances    schedule 22.04.2021
comment
Как вы запускаете VLC в первую очередь?   -  person nino    schedule 22.04.2021
comment
Я использую следующую команду для перекодирования входящего потока на удаленный сервер: cvlc -vvv http://my_incoming_stream --sout '#transcode{vcodec=h264,vb=1200,scale=Auto,width=640,height=480,acodec=mp3,ab=128,channels=2,samplerate=44100}:std{access=rtmp,mux=ffmpeg{mux=flv},dst=rtmp://my_output_server}' @MarcSances Я уже видел вашу ссылку, но она использует файл журнала. Я бы предпочел использовать непосредственно вывод терминала, если это возможно.   -  person fdamien12    schedule 23.04.2021
comment
Вопрос, который я вам отправил, использует tail -f для чтения файла журнала, но любой вывод команды вместо tail -f должен работать одинаково. Однако обратите внимание, что stderr не будет учитываться, если вы не наберете 2>1 перед своим каналом.   -  person Marc Sances    schedule 24.04.2021
comment
Действительно, это работает! Спасибо   -  person fdamien12    schedule 25.04.2021