プロセスを開始し、ターミナルウィンドウでバックグラウンドで処理する場合(ping google.com &
など)、kill %1
を使用してプロセスを強制終了できます(ジョブ1と想定)。
ただし、別のターミナルウィンドウ(またはタブ)を開くと、バックグラウンドプロセスはjobs
の下に表示されず、kill
を使用して直接強制終了することはできません。
このプロセスを別の端末ウィンドウまたはタブから強制終了することは可能ですか?
注:私はXfceターミナルエミュレータ0.4.3とbashを使用しています(ただし、ソリューションが別の一般的なシェルに存在するがbashではない場合は、それにオープンしています)。
はい、知っておく必要があるのは、プロセスのプロセスID(PID)だけです。これは、ps
コマンドまたはpidof
コマンドで見つけることができます。
kill $(pidof ping)
他のシェルから動作するはずです。そうでない場合は、pingにpsとgrepを使用できます。
別のターミナルウィンドウでtop
と入力すると、実行中のすべてのプロセスが一覧表示されます。 job
のプロセスIDをメモし、q
を押して画面を終了します。次に、kill
プロセスを通常どおり実行します。
私は通常次のようなことをします:
ps aux | grep $PROCESS | grep -v grep | awk '{print $2 " " $11}'
たとえば、$ PROCESS = "bash"の場合、これは現在のセッションからの出力です。
2683 bash
4481 bash
5695 bash
それから私はkill $PID
どちらでも/bin/bash
もう走りたくない。
ps
、grep
および(オプションで)awk
は、PIDをkill
に突き止めるのに役立ちます。