2011-10-14 1 views

답변

6

당신은 당신이 종료 할 앱의 이름 인 두 경우 모두 foobar에, 또는 당신이 pkillfoobar을 사용할 수 있습니다, 다음에 대한 kill 명령을 실행, PID를 얻기를 위해 ps -aux | grep foobar을 시도 할 수 있습니다.

0

pskill 유닉스 Runtime.exec를 사용하여 명령을 호출하고 자신의 출력을 긁어. Java 프로그램이 생성하지 않은 프로세스를 쉽게 검사하고 액세스 할 수 있다고 생각하지 않습니다.

1

스크립트에서이 응용 프로그램을 시작하는 경우 특수 변수 $!을 사용하여 백그라운드에서 만든 마지막 프로세스의 PID를 얻을 수 있습니다.이 값은 나중에 셧다운 기능에 사용할 수 있도록 파일에 저장할 수 있습니다. 자바 프로세스에 대한

nohup java -jar example.jar & 
echo $! > application.pid 
5

PID 년대 ps -aux | grep java | awk '{print $2}'을 -e.g : 아래

은 예입니다.

jps으로 전화하여 프로세스 목록을 제공 할 수도 있습니다. 이 단점은 jps 명령을 실행하는 사용자에게만 프로세스가 표시된다는 것입니다.

3

당신은 당신의 응용 프로그램 우분투

pidof <application name>

1

ps aux | awk '/java/ {print "sleep 10; kill "$2}' | bash

, ps -aux는 구문 오류가 발생, ps aux 작품의 PID를 얻을 수 pidof를 사용할 수 있습니다.

출력은 awk으로 파이프되며 java와 줄을 일치시키고 10 초 동안 잠자기 후 pId로 프로그램을 종료합니다. 파이프가 배시를하는 것을 확인하십시오. 원하는 기간 동안 언제든지 자유롭게 지정하거나 다른 통화에 대해 적절한 느낌을주는 통화를하십시오. 나는 다른 대답의 대부분이 quesiton의 '일정한 시간이 지난 후에'를 간과하는 것을 간과했다.

pidof java | awk '{print "sleep 10; kill "$1}' | bash을 호출하여이를 수행 할 수도 있지만 선택할 수 있습니다. 나는 일반적으로 ps aux를 사용한다.

3

의 PID를 찾는 대해 말해?

public static void killAll(String process) { 
    try { 
     Vector<String> commands = new Vector<String>(); 
     commands.add("pidof"); 
     commands.add(process); 
     ProcessBuilder pb = new ProcessBuilder(commands); 
     Process pr = pb.start(); 
     pr.waitFor(); 
     if (pr.exitValue() != 0) return; 
     BufferedReader outReader = new BufferedReader(new InputStreamReader(pr.getInputStream())); 
     for (String pid : outReader.readLine().trim().split(" ")) { 
      log.info("Killing pid: "+pid); 
      Runtime.getRuntime().exec("kill " + pid).waitFor(); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 
관련 문제