別の名前でプロセスを開始するにはどうすればよいですか?


12

基本的に、独自の子プロセスを作成する可能性のあるいくつかのプロセスを動的に開始したいと思います。また、必要なときにいつでも、作成したばかりのプロセスの特定のグループを強制終了したいです。

私が考えることができる1つの方法は、名前でプロセスを開始し(グループとして区別するため)、次にpkill名前を使用してそれらを強制終了することです。

問題は、名前でプロセスを開始pkillして、名前でそれらを強制終了できるようにする方法です。他の解決策も受け入れます。


通常使用しているものとは異なる名前でプロセスを開始する方法を尋ねていますか?または、コマンドラインからプロセスを開始する方法を尋ねているだけですか?
Eliah Kagan

Linuxでは、デフォルトでプロセス名はファイル名と同じように表示されます。プロセス名としてデフォルトのファイル名を使用したくないし、実行するたびにファイル名を変更したくない。したがって、「pkill -f MyOwnName」を使用して、MyOwnNameという名前で開始したすべてのプロセスを一度に強制終了できるように、必要な特定の名前でプロセスを開始したいと思います。
キャッシュ

回答:


12

exec組み込みのシェルを使用できます。

bash -c "exec -a MyUniqueProcessName <command> &"

<command>現在のシェルを置き換えます。新しいプロセスは作成されません。そのため、を呼び出す新しいシェルを開始していますexec

それからあなたはプロセスを殺すことができます:

pkill -f MyUniqueProcessName

同じ名前で複数のプロセスを開始するとpkill -f <name>、それらすべてが強制終了されます。


どのように元に戻しbash -c "exec -a MyUniqueProcessName <command> &"ますか?
VNVN 2016年

1
@VNVNできません。コマンドが実行されている場合、それは実行されています。「元に戻す」には、何が行われたかを正確に把握し、可能であれば手動で元に戻す必要があります。コマンドの実行時にCtrl + Zはありません。
terdon 2016年

+1。私の観察は次のとおりです。使用される名前exec -a name sleep 100は、私が行うときに表示されますが、表示されps -efない場合は表示されませんpstree -p
Trevor Boyd Smith

meldには機能しません。->bash -c "exec -a mymeld123 meld &"
エドゥアルドルシオ

0

AMItac / Solarisエージェンシー

私はオーディオトランスコーディングツールでこのケースを持っています。(3回実行)が1つの名前しかありません。

フォローしました。シェルツールからbin dirに移動して3回コピーせず、新しい名前を付けました。tc-1、tc-2、tc-3(これは小さなツールなので、ハードディスクスペースをあまり消費しません(太いバイナリでは、他の言及された方法を使用しないでください)

したがって、プロセスは一意の名前で開始され、続行したい他のトランスコーディングプロセスを強制終了する危険なしに、この一意の名前で強制終了できます。

別のトリックMIGHT work ...

#bashスクリプトName.shを追加し、実行可能にします。そこでコマンドを入力し、bashスクリプト自体を開始します。Centosでは、ビン名自体ではなく、実行したBashscript名を使用します。

何かが誰かを助けることを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.