他のシェル(ターミナルウィンドウまたはタブ)で開始されたタスクを終了するには?

他のシェル(ターミナルウィンドウまたはタブ)で開始されたタスクを終了するには?

プロセスを開始してターミナルウィンドウ(たとえば)のバックグラウンドに配置したら、ping google.com &それを使用してプロセスを終了できますkill %1(タスク1と仮定)。

ただし、別のターミナルウィンドウ(またはタブ)を開くと、下にバックグラウンドプロセスが表示されないため、jobs直接使用できませんkill

他の端末ウィンドウまたはタブでこのプロセスを終了できますか?

注:私はXfceターミナルエミュレータ0.4.3とbashを使用しています。 (ソリューションがbash以外の共通シェルにある場合でも、これに対して開いています。)

答え1

はい、知っておくべきことはプロセスのプロセスID(PID)だけです。psまたはコマンドを使用してそれを見つけることができますpidof

kill $(pidof ping)

他のシェルでも機能する必要があります。それ以外の場合は、psとgrepを使用してpingを実行できます。

答え2

別のターミナルウィンドウに入力すると、top実行中のすべてのプロセスが一覧表示されます。プロセスIDを記録し、jobこのq画面を終了してください。その後、killプロセスは通常と同じです。

答え3

私は通常次のことをします:

ps aux | grep $PROCESS | grep -v grep | awk '{print $2 " " $11}'

たとえば、$PROCESS="bash" の場合、現在のセッションの出力は次のようになります。

2683 bash
4481 bash
5695 bash

次に、これ以上操作したくないプログラムを選択しますkill $PID/bin/bash

psgrep(オプション)PIDawkを追跡するのに役立ちますkill

答え4

シェルでこれを行うにはあまりにも単純で答えではありません。しかし、「解決」したいすべての人のために:

閉じる必要がある別のターミナルウィンドウに切り替え、[X]をクリックします。その後、プロセスは終了すると言い、私が本当にこれをしたいかどうか尋ねます。Yes。それが私が必要とするすべてです。

関連情報