이 특정 응용 프로그램이 실행 중인지 확인하는 응용 프로그램을 만들려고합니다. 그런 다음 지정된 시간이 지난 후에 응용 프로그램을 종료하십시오. 앱의 PID를 얻을 계획입니다. 앱의 PID를 얻으려면 어떻게해야합니까? 당신은 아마있을 것이다우분투 자바 : 특정 프로그램의 PID를 찾아 프로그램을 죽이십시오.
감사
이 특정 응용 프로그램이 실행 중인지 확인하는 응용 프로그램을 만들려고합니다. 그런 다음 지정된 시간이 지난 후에 응용 프로그램을 종료하십시오. 앱의 PID를 얻을 계획입니다. 앱의 PID를 얻으려면 어떻게해야합니까? 당신은 아마있을 것이다우분투 자바 : 특정 프로그램의 PID를 찾아 프로그램을 죽이십시오.
감사
당신은 당신이 종료 할 앱의 이름 인 두 경우 모두 foobar
에, 또는 당신이 pkill
foobar
을 사용할 수 있습니다, 다음에 대한 kill
명령을 실행, PID를 얻기를 위해 ps -aux | grep foobar
을 시도 할 수 있습니다.
는 ps
및 kill
유닉스 Runtime.exec를 사용하여 명령을 호출하고 자신의 출력을 긁어. Java 프로그램이 생성하지 않은 프로세스를 쉽게 검사하고 액세스 할 수 있다고 생각하지 않습니다.
스크립트에서이 응용 프로그램을 시작하는 경우 특수 변수 $!
을 사용하여 백그라운드에서 만든 마지막 프로세스의 PID를 얻을 수 있습니다.이 값은 나중에 셧다운 기능에 사용할 수 있도록 파일에 저장할 수 있습니다. 자바 프로세스에 대한
nohup java -jar example.jar &
echo $! > application.pid
PID 년대 ps -aux | grep java | awk '{print $2}'
을 -e.g : 아래
jps
으로 전화하여 프로세스 목록을 제공 할 수도 있습니다. 이 단점은 jps 명령을 실행하는 사용자에게만 프로세스가 표시된다는 것입니다.
당신은 당신의 응용 프로그램 우분투
pidof <application name>
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를 사용한다.
Find the pid of a java process under Linux
이 링크를 참조 할 수 있습니다 ... 그것은 특정 클래스 이름 다음이 방법에 대해
의 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();
}
}
}