web-dev-qa-db-ja.com

別のシェル(ターミナルウィンドウまたはタブ)で開始されたジョブを強制終了するにはどうすればよいですか?

プロセスを開始し、ターミナルウィンドウでバックグラウンドで処理する場合(ping google.com &など)、kill %1を使用してプロセスを強制終了できます(ジョブ1と想定)。

ただし、別のターミナルウィンドウ(またはタブ)を開くと、バックグラウンドプロセスはjobsの下に表示されず、killを使用して直接強制終了することはできません。

このプロセスを別の端末ウィンドウまたはタブから強制終了することは可能ですか?

注:私はXfceターミナルエミュレータ0.4.3とbashを使用しています(ただし、ソリューションが別の一般的なシェルに存在するがbashではない場合は、それにオープンしています)。

9
DQdlM

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

kill $(pidof ping)

他のシェルから動作するはずです。そうでない場合は、pingにpsとgrepを使用できます。

10
Keith

別のターミナルウィンドウでtopと入力すると、実行中のすべてのプロセスが一覧表示されます。 jobのプロセスIDをメモし、qを押して画面を終了します。次に、killプロセスを通常どおり実行します。

6
arthankamal

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

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

たとえば、$ PROCESS = "bash"の場合、これは現在のセッションからの出力です。

2683 bash
4481 bash
5695 bash

それから私はkill $PIDどちらでも/bin/bashもう走りたくない。

psgrepおよび(オプションで)awkは、PIDをkillに突き止めるのに役立ちます。

4
Charles Boyd