Убейте все остальные экземпляры запущенного процесса, кроме самого первого

Я работаю над проектом, в котором мне нужно mplayer запускать несколько экземпляров, чтобы создавать микширование в режиме реального времени в режиме реального времени из двух файлов. Таким образом, музыка постоянно воспроизводится на 90% громкости (отображается в виде «М» на следующей временной шкале), и в определенные моменты мы уменьшаем громкость («м»), чтобы разместить голос («V») над музыкой, после который мы вернем музыке до 90%, когда образец голоса закончится.

TIMELINE (Минуты)

0===========1===========2===========3===========4===========...
_____________VVVVVVVV__________VVVVVVVVVVVVVV__________VVVVV...
MMMMMMMMMMMMMmmmmmmmmMMMMMMMMMMmmmmmmmmmmmmmmMMMMMMMMMMmmmmm...

Все работает до сих пор очень хорошо. Но по какой-то причине во многих случаях второй экземпляр mplayer заканчивает воспроизведение голосового сигнала, но процесс все еще остается активным и никогда не заканчивается.

Ответ здесь: Убейте все процессы, кроме тот, который запускает скрипт, не работает для этого случая.

Я также пробовал принятый ответ по этому вопросу: Убейте все процессы, кроме того, что запускает скрипт , но это убьет КАЖДЫЙ экземпляр mplayer, и мне нужно, чтобы первый постоянно играл музыку.

На этой странице http://www.oracleflash.com/20/How-to-kill-all-processes- с-one-command-in-Linux.html они воспроизводят способ «Убить все процессы, инициированные приложением». Это действительно полезно для этого случая, но это также убьет все экземпляры mplayer.

Ожидаемое решение

Я сохраняю PID музыкального плеера с помощью: [!d10 ]

mplayer -shuffle -playlist playlist.m3u /dev/null 2>&1 & echo $! > player.pid

С этим номером PID я хотел бы использовать решение последней заданной страницы, чтобы убить все процессы. ИСКЛЮЧАЕТ тот, который был сохранен в файле player.pid. Таким образом, размещение cat player.pid в середине

kill -9 `ps -ef | grep oraxpo | grep -v grep | awk '{print $2}' 

может сделать трюк.

Проблема в том, что я не знаю, где ее разместить. Или это лучший способ сделать это.

Еще одна идея - убить последние процессы один раз, но остановиться на самом первом.

Любые идеи оценили.

Спасибо заранее.

1
задан 13 April 2017 в 15:37

0 ответов

Другие вопросы по тегам:

Похожие вопросы: