ps -ef | grep Tomcat
を使用して、実行中のTomcatサーバーを見つけました。 kill -9 {id}
を試しましたが、「そのようなプロセスはありません」が返されます。私は何を間違えていますか?
以下に例を示します。
Admins-MacBook-Pro:test-parent tom.maxwell$ ps -ef | grep Tomcat
2043706342 39707 39695 0 3:40PM ttys000 0:00.00 grep Tomcat
Admins-MacBook-Pro:test-parent tom.maxwell$ kill -9 39707
-bash: kill: (39707) - No such process
Tomcatを強制終了するためにTomcatのpid(プロセスID)を知る必要はありません。次のコマンドを使用して、Tomcatを強制終了できます。
pkill -9 -f Tomcat
ps -ef | grep Tomcat | awk '{print $ 2}' | xargs kill -9
https://Gist.github.com/nrshrivatsan/1d2ea4fcdcb9d1857076
パート1
ps -ef | grep Tomcat => Tomcat grepですべてのプロセスを取得
パート2
プロセスの詳細を取得したら、それをスクリプトのパート2にパイプします
awk '{print $ 2}' | xargs kill -9 => 2番目の列[プロセスID]を取得し、-9オプションでそれらを強制終了します。
お役に立てれば。
Tomcatは実行されていません。あなたの検索はTomcatを検索しているgrepプロセスを示しています。もちろん、出力が表示されるまでに、grepは実行されていないため、pidは無効になっています。
他の人がすでに指摘したように、grepプロセスを見てきました。出力をTomcat自体に制限する場合は、2つの選択肢があります
文字クラスで最初に検索された文字をラップします
ps -ef | grep '[t]omcat'
これもTomcatを検索しますが、grep [t]omcat
と一致しないため、[t]omcat
エントリが見つかりません。
psでカスタム出力形式を使用する
ps -e -o pid,comm | grep Tomcat
これは、プロセス引数なしでプロセスのpidと名前のみを表示します。そのため、grepはgrep Tomcat
としてではなく、grep
としてリストされます。
ターミナルで以下のコマンドを入力するだけです
ps -ef |grep 'catalina'
プロセスIDの値をコピーし、次のコマンドを入力してプロセスIDを貼り付けます
kill -9 processid
ps -ef
現在実行中のすべてのプロセスをリストします
| grep Tomcat
出力をgrep
に渡し、Tomcatのインスタンスを探します。 grep
はプロセス自体であるため、コマンドから返されます。ただし、出力にはTomcatの実行プロセスは表示されません。
Tomcat/bin/catalina.sh
コメントセクションが終了した直後に次の行を追加します。
CATALINA_PID=someFile.txt
次に、Tomcatの実行中のインスタンスを強制終了するには、次を使用できます。
kill -9 `cat someFile.txt`
ps -Af | grep "Tomcat" | grep -v grep | awk '{print$2}' | xargs kill -9
これは私のために働いた:
ステップ1:ps aux | grep org.Apache.catalina.startup.Bootstrap | grep -v grep | awk '{ print $2 }'
をエコーする
上記のコマンドは「process_id」を返します
ステップ2:-9 process_idを強制終了
//このprocess_idは、ステップ1:出力と同じです。
名前でプロセスを強制終了するには、次を使用します
ps aux | grep "search-term" | grep -v grep | tr -s " " | cut -d " " -f 2 | xargs kill -9
tr -s " " | cut -d " " -f 2
はawk '{print $2}'
と同じです。 tr
はタブスペースを単一スペースに抑制し、cut
には区切り文字として<SPACE>
が提供され、2番目の列が要求されます。 ps aux
出力の2番目の列はプロセスIDです。
サーバー上の多数のJavaプロセスの中でactiveMQ Javaプロセスを終了する必要がありましたが、これは特定のユーザー(ユーザー名はactivemq)によって開始されます。分離の良い方法は、特定のユーザーがプロセスを開始することです:
ps -ef | grep "activemq" | awk '{print $2}' | xargs kill -9
@Aurandが言ったように、Tomcatは実行されていません。使用できます
ps
プログラムを無視するps -ef |grep Java | grep Tomcat
コマンド。
シェルスクリプトファイルで私のために働いた。
kill -9 $(ps -ef | grep 8084 | awk 'NR==2{print $2}')
NRは、入力ファイル内のレコード数です。 awk
はテキストを検索または置換できます
これは非常にうまく機能します(Tomcatプロセスを見つけて強制的に終了します)
ps -ef | grep Tomcat | awk '{print $2}' | xargs kill -9