基本的に、独自の子プロセスを作成する可能性のあるいくつかのプロセスを動的に開始したいと思います。また、必要なときにいつでも、作成したばかりのプロセスの特定のグループを強制終了したいです。
私が考えることができる1つの方法は、名前でプロセスを開始し(グループとして区別するため)、次にpkill
名前を使用してそれらを強制終了することです。
問題は、名前でプロセスを開始pkill
して、名前でそれらを強制終了できるようにする方法です。他の解決策も受け入れます。
基本的に、独自の子プロセスを作成する可能性のあるいくつかのプロセスを動的に開始したいと思います。また、必要なときにいつでも、作成したばかりのプロセスの特定のグループを強制終了したいです。
私が考えることができる1つの方法は、名前でプロセスを開始し(グループとして区別するため)、次にpkill
名前を使用してそれらを強制終了することです。
問題は、名前でプロセスを開始pkill
して、名前でそれらを強制終了できるようにする方法です。他の解決策も受け入れます。
回答:
exec
組み込みのシェルを使用できます。
bash -c "exec -a MyUniqueProcessName <command> &"
<command>
現在のシェルを置き換えます。新しいプロセスは作成されません。そのため、を呼び出す新しいシェルを開始していますexec
。
それからあなたはプロセスを殺すことができます:
pkill -f MyUniqueProcessName
同じ名前で複数のプロセスを開始するとpkill -f <name>
、それらすべてが強制終了されます。
bash -c "exec -a MyUniqueProcessName <command> &"
ますか?
exec -a name sleep 100
は、私が行うときに表示されますが、表示されps -ef
ない場合は表示されませんpstree -p
。
bash -c "exec -a mymeld123 meld &"
AMItac / Solarisエージェンシー
私はオーディオトランスコーディングツールでこのケースを持っています。(3回実行)が1つの名前しかありません。
フォローしました。シェルツールからbin dirに移動して3回コピーせず、新しい名前を付けました。tc-1、tc-2、tc-3(これは小さなツールなので、ハードディスクスペースをあまり消費しません(太いバイナリでは、他の言及された方法を使用しないでください)
したがって、プロセスは一意の名前で開始され、続行したい他のトランスコーディングプロセスを強制終了する危険なしに、この一意の名前で強制終了できます。
別のトリックMIGHT work ...
#bashスクリプトName.shを追加し、実行可能にします。そこでコマンドを入力し、bashスクリプト自体を開始します。Centosでは、ビン名自体ではなく、実行したBashscript名を使用します。
何かが誰かを助けることを願っています。