Java 응용 프로그램에 대한 두 가지 요구 사항이 있습니다. 종료되면 다시 시작하십시오. 서버가 재부팅되면 다시 시작하십시오. 대답을 사용하여 here 나는 자바 응용 프로그램이 죽으면 다시 시작 스크립트가 있습니다.부팅시 Java 프로세스 시작 및 종료시 자동 다시 시작
#!/bin/bash until java -Xms256m -Xmx768m -jar MyApp.jar; do echo "MyApp crashed with exit code $?. Respawning... " >&2 sleep 5 done
나는 "nohup을의 restart_script.sh &"이것을 실행하고 문제없이 하루 종일 실행됩니다. 이제 시작 요구 사항에 대해. 나는 /etc/init.d/crond 스크립트를 가져 와서 스크립트와 crond 바이너리를 바꿨지 만 시작시 멈 춥니 다.
#!/bin/bash # # Init file for my application. # . /etc/init.d/functions MYAPP=restart_script.sh PID_FILE=/var/run/myapp.pid start(){ echo -n "Starting My App" daemon --user appuser $MYAPP RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/myapp return $RETVAL } stop(){ echo -n "Stopping my application" killproc $MYAPP RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/myapp return $RETVAL } ... case "$1" in start) start ;; stop) stop ;; ... esac
/sbin/service myapp를 시작하면 스크립트가 시작되지만 콘솔이 중단됩니다. 나는 "daemon --user appuser nohup $ MYAPP &"을 시도했으며 즉시 [OK] 표시가 없으면 프롬프트로 돌아가고 ps를 수행 할 때 나는 여전히 init이 매달린 것을 보았다. init 스크립트 내에서 스크립트를 호출하고 올바르게 리턴하는 방법은?
감사합니다,
그렉
http://superuser.com에 더 적합 할 수 있습니다. – danben