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}' 출력의 두 번째 열만 인쇄합니다 (이 경우 PID).

$(...)명령 대체입니다. 기본적으로 내부 명령의 결과는 다음에 대한 인수로 사용됩니다.kill

이것은 살해 대상을보다 세밀하게 제어 할 수 있다는 이점이 있습니다. 예를 들어, 공유 시스템을 사용하는 경우 검색어를 편집하여 자신의 Java 프로세스 만 종료하려고 시도 할 수 있습니다.


49

명명 된 모든 프로세스를 종료 java하려면 다음 명령을 사용할 수 있습니다.

killall -9 java

이 명령은 이름으로 식별 된 프로세스로 신호를 보냅니다.


killall java내가 해결할 수없는 임의의 이유로 인해 나를 위해 일하지 않았습니다. -9매개 변수는 그 처리를했다. 고맙습니다.
Paul Nelson Baker

5
9는 SIGKILL입니다. 프로그램은 그것을 무시할 수 없으며 기본적으로 다음과 같이 말합니다.
Milan Todorovic 2016 년

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는 기본 메소드를 포함하는 실행중인 Java 프로그램의 클래스입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.