Javaプロセスを強制終了する


25

私は計算量の多いコードに取り組んでいます-今のところ-多くのクラッシュがありますが、私はまだそれに取り組んでいます:)クラッシュすると、GUIウィンドウを閉じることができません。シェルを開いてプロセスを強制終了する必要があります。

これはJavaプロセスであり、簡単に見つけることができます。

nkint@zefiro:~$ ps aux | grep java
nkint   2705 16.6  1.0 460928 43680 ?        Sl   12:23   0:08 /usr/lib/jvm/java-6-sun-1.6.0.26/bin/java -Djava.library.path=something something
nkint   2809  0.0  0.0   4012   776 pts/0    S+   12:24   0:00 grep --color=auto java
nkint@zefiro:~$ kill -9 2705

今では簡単ですが、非常に機械的な作業です。したがって、通常、約7〜8個のプロセスがクラッシュするのを待ってから、kill -9各プロセスをクラッシュさせます。

これを自動的に行いたいです。いくつかのコマンドをパイプして(n-1)個の結果のIDを取得し、それを強制終了することは簡単だと思いますが、ps aux | grep javaどこから始めればよいのかわかりません。

誰も私にヒントを与えることができますか?

回答:


22

さらにいくつかのパイプを使用すると、目的の場所に移動できます。私がそれをする方法は次のとおりです。

search_terms='whatever will help find the specific process' 

kill $(ps aux | grep "$search_terms" | grep -v 'grep' | awk '{print $2}')

ここで何が起こっているのですか:

grep -v 'grep' 結果からgrepプロセスを除外します。

awk '{print $2}' 出力の2番目の列(この場合はPID)のみを出力します

$(...)コマンド置換です。基本的に、内部コマンドからの結果は、引数として使用されますkill

これには、殺されたものをより細かく制御できるという利点があります。たとえば、共有システムを使用している場合、検索用語を編集して、独自のJavaプロセスのみを強制終了しようとすることができます。


49

名前の付いたすべてのプロセスを強制終了javaする場合は、次のコマンドを使用できます。

killall -9 java

このコマンドは、名前で識別されるプロセスにシグナルを送信します。


killall java解決できないランダムな理由で私のために働いていませんでした。-9パラメータは、そのの世話をしました。ありがとうございました。
ポールネルソンベイカー

5
9はSIGKILLです。プログラムはそれを無視することはできず、基本的に「今すぐ自分自身を終了する」と言っています。
ミラントドロビッチ14年

IntelliJユーザーは、Tomcatや他の多くのアプリは言うまでもなく、IDEがクラッシュしたことに気付くかもしれません。これは総当たり的な方法であり、に依存するサービスまたは生産性アプリを備えたシステムでは推奨されませんjava
tresf

3

テキストエディターを開き、この短いbashスクリプトをホームディレクトリに「killjava」として保存します。

#! /bin/bash

# Kill Java process

# Determine the pid
PID=`ps -C java -o pid=`

kill -9 $PID

次にchmod u+x ~/killjava、ターミナルでファイルを実行できるようにします。

その後~/killjava、端末から呼び出すだけで、Javaプロセスは完全に停止します。この方法でJavaプロセスを強制終了すると、他のどのリソース(データベース接続など)が影響を受けるかを検討することができます。たとえば、おそらくkill -15より適切です- ここの説明を参照してください


2

これは、@ Deanの以前の回答に基づいた代替アプローチです。

これは、jpsを使用してjavaプロセスを識別します。

kill $(jps | grep <MainClass> | awk '{print $1}')

MainClassは、mainメソッドを含む実行中のJavaプログラムのクラスです。

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