私は、2つのファイルからリアルタイムのミキシングボイスオーバーを作成するために、いくつかのインスタンスを実行するためにmplayer
が必要なプロジェクトに取り組んでいます。そのため、音楽は常に90%の音量(次のタイムラインでは「M」で表されます)で再生され、特定の瞬間に音量(「m」)を下げて音楽に音声(「V」)をかけます。音声サンプルが終了したら、音楽を90%に戻します。
0===========1===========2===========3===========4===========...
_____________VVVVVVVV__________VVVVVVVVVVVVVV__________VVVVV...
MMMMMMMMMMMMMmmmmmmmmMMMMMMMMMMmmmmmmmmmmmmmmMMMMMMMMMMmmmmm...
これまでのところ、すべてがかなりうまく機能しています。しかし、何らかの理由で、多くの場合、2番目のmplayer
インスタンスがボイスオフ再生を終了しますが、プロセスはまだアクティブのままであり、終了することはありません。
答えはここにあります: スクリプトを実行しているプロセスを除くすべてのプロセスを殺す はこの場合動作していません。
私もこの質問で受け入れられた答えを試しました: https://unix.stackexchange.com/questions/50555/kill-many-instances-of-a-running-process-with-one-command =しかし、これはmplayer
のすべてのインスタンスを強制終了し、最初のインスタンスが常に音楽を再生し続ける必要があります。
このページでは http://www.oracleflash.com/20/How-to-kill-all-processes-with-one-command-in-Linux.html 彼らはすべてを殺す方法を再現しますアプリケーションによって開始されたプロセス。これはこの場合に非常に便利ですが、これはmplayer
のすべてのインスタンスも強制終了します。
私は音楽プレーヤーのPIDを次のように保存しています:
mplayer -shuffle -playlist playlist.m3u </dev/null >/dev/null 2>&1 & echo $! > player.pid
そのPID番号を使用して、player.pidファイルに保存されているすべてのプロセスEXCEPTを強制終了するために、最後に指定されたページのソリューションを使用したいと思います。そのため、cat player.pid
を中央に配置します
kill -9 `ps -ef | grep oraxpo | grep -v grep | awk '{print $2}'
トリックを行うことがあります。
問題は、どこに配置するかわからないことです。または、別の/より良い方法がある場合。
別のアイデアは、最後のプロセスを一度に1つずつ強制終了し、最初のプロセスで停止することです。
どんなアイデアでも大歓迎です。
前もって感謝します。
あなたが試すことができます:
pgrep mplayer | grep -vf player.pid | xargs kill -9
ノート:
pgrep
はtheプロセス情報を検索するためのツールです。一致の否定とPIDファイルの使用もサポートしていますが、残念ながら、選択的に一致を否定する方法がわかりませんでした。-f
を使用してファイルからgrep
を読み取り、-v
との一致を否定するだけです。xargs
は入力を引数に変換するため、コマンド置換を使用する必要はありません