2017-02-14 2 views
0

특정 시간이 지난 후 (컴파일하지 않을 때) 자동으로 터미널에서 Java 프로그램의 실행을 종료 할 수 있습니까?터미널에서 Java 프로세스를 자동으로 종료합니다.

java examples.Example 
+0

를 사용하면 프로세스 ID (PID)를 알고있는 경우에 I가 있다고 가정; 것 "수면 (10)는 PID를 죽일" 속임수를 써? – user2660966

+0

그럴 수도 있지만 더 많은 서버 관리 질문입니다. 그리고 그것은 OS – Andremoniy

+0

에 달려 있는데 어떻게 같은 줄에 추가 할 수 있습니까? – Razieh

답변

2

를 사용하면 프로세스의 출력을 볼 필요가없는 경우 :이 스크립트는 당신의 프로세스를 시작합니다

#!/bin/bash 
{ 
    java examples.Example >/some/place.log & 
    echo $! 
    wait $! 
} | { 
    sleep 10 
    kill $(read PID; echo $PID) 
} 

을 예를 들어, 나는 10 초 후에 다음을 중지 좋아 서브 쉘을 사용하여 PID를 대기 서브 쉘에 전송하면 10 초 동안 대기하고이를 종료합니다.

당신이 당신의 프로세스가 항상 이상 10 초 정도 걸릴 것이라는 점을 알고 있다면, 당신은 단순히이 작업을 수행 할 수 있습니다

java examples.Example >/some/place.log & 
sleep 10 
kill $! 
+0

파이프가 필요 없습니다. 'sleep' /'kill' 프로세스는 다른 명령의 표준 출력을 필요로하지도, 신경 쓰지도 않습니다. – chepner

+0

@chepner 파이프는 첫 번째 서브 쉘이 PID를 두 번째 서브 쉘에 에코 할 수 있도록합니다. 또한 두 개의 서브 셸을 병렬로 생성 할 수 있습니다. –

+1

그럴 필요는 없습니다. 'java ... & java_pid = $ !; (sleep 10; kill $ java_pid) &'. – chepner

관련 문제