2010-12-28 9 views
2

실행중인 .jar를 닫고 터미널에서 다시 열어주는 쉘 스크립트를 작성해야합니다. 필자는 쉘 스크립트를 작성한 적이 없으며 시작해야할 위치를 알지 못합니다.우분투 쉘 스크립트가 다시 시작됩니다.

다음은 터미널에서 앱을 실행하는 데 사용하는 명령입니다.

java -jar '/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar' --Terminal=true 

저는 Ubuntu 10.04 LTS를 실행하고 있습니다.

답변

1

"실행중인 .jar"를 닫으면 어떻게됩니까? 당신은 Un * x 시스템을 사용하고 있으므로 "kill -9"는 프로세스를 죽일 수 있습니다. 은 프로세스가 사용하고있는 모든 리소스를 해제합니다 (또는 Un * x 시스템은 호환되지 않지만, 한 번도 본적 없음).

kill -9를 보내 자마자 Java 프로그램과 스레드, 모든 것이 이됩니다. 종료 훅이 없으며 아무 것도 없습니다. 전원 코드를 잡아 당긴 것과 같습니다.

"kill -9"는 실행중인 Java 프로그램을 죽일 수있는 적절한 방법입니까? Java 프로그램이 "kill -9'ed"된 후 부드럽게 다시 시작됩니까? (으로 다시 시작해야하지만 항상 그런 것은 아닙니다.)

진짜 죽일 괜찮하고 .JAR을 알고있는 경우 항상 명령 줄을 사용하여 시작하고 당신이 알고있는 경우에만이있을 것이다 경우 하나의 사용자에 의해 시작 .JAR, 당신이 할 수처럼 뭔가 :

#!/bin/bash 

kill -9 $(ps aux | grep java | grep dbConvert2 | awk '{print $2}') 
java -jar '/home/fdqadmin/NetBeansProjects/dbConvert2/dist/dbConvert2.jar' --Terminal=true 

또한 자바 idiosynchratic 땅으로 가서 '표준 새 번역'과 같은 "스마트"명령을 사용하지만 오히려 강력한 유엔 * X 도구를 함께있을 것입니다 수, 덕분에 많이 :)

+0

생명을 위협하는 시스템에서 사용할 수있는 방탄 제품이 아닙니다. 그것은 할 수있는 일의 단지 예입니다 ... – SyntaxT3rr0r

+0

이 시스템은 200 명 이상의 직원이 일할 수있는 능력을 보장합니다. 100 % 확실한 방법이 있습니까? – JustinY17

+1

@ JustinY17 스푼 벤더 (SpoonBender)가 말하고자하는 것은 경고 또는 아무것도없이 프로세스 차가운 냉기를 막을 것이라는 것입니다. 나는 그에게 동의한다. (더 이상 +1) - 더 좋은 방법은이 프로그램에 어떻게 든 메시지를 전달하는 것이므로 깔끔하게 종료된다. 그런 일이 일어날 때까지 기다린 다음 다시 시작하는 스크립트가 있어야합니다. 이 프로세스가 실행 중인지 여부를 모니터하기 위해'monit' 또는'nagios'와 같은 것을 고려해 볼 수 있습니다 - 죽인 경우 다시 시작합니다. –

0

나는에 댓글을 달았습니다 여기에서는 이전에이 메서드를 계속 진행하고자하는 경우 자바 신호 처리에 대한 developerworks의 interesting document을 사용합니다.

그러나 나는 아직도 당신이 현재의 코드 모듈에서 외부 프로세스를 종료하는 것처럼, 많은 프로세스 간 통신 메커니즘 중 하나를 통해 중지하도록 요청하는 것으로 믿는다.

관련 문제