본문 바로가기

Linux&Unix

[Linux ro Unix] 백그라운드에서 Java 실행하기[nohub]

"&" 명령어

백그라운드로 실행하는 명령어.

터미널과 세션이 끊키면(로그아웃 등으로..) 프로세스도 자동 종료 된다.

ex) java -cp ./bin src.Main &

 

"nohub" 명령어

터미널과 세션이 끊켜도 프로세스가 종료되지 않게 한다.

ex) nohub java -cp ./bin src.Main &

 

 

주의사항

1. nohub은 실행시 nohub.out이라는 파일을 만들어 로그를 기록한다.
2. 쉘스크핍트 실행시 파일권한이 755여야 한다. (chmod 755 파일명)
3. 종료시 아래 2가지 방법으로 종료
ps -ef | grep 쉘스크립트파일명
kill -9 PID번호

 

스크립트 파일을 만들어 nohub 실행

아래와 같은 폴더구조에서 스크립트파일(.sh)를 만들​고 

server (디렉토리)
Service.pid (text 파일)
com.jar (java 라이브러리)
start.sh
stop.sh

아래 명령어 입력하여 실행 하면 된다.

sudo sh ./start.sh
sudo sh ./stop.sh

 

아래는 스크립트 파일 세부 내용을 적어두었다. 

 

Service.pid 파일

123456

start.sh 파일

echo service start....
​
export LANG;LANG=ko
​
JAVA_HOME=/usr/java1.7/bin
JAR_FILE=com.jar
MAIN_CLASS=com.service.Main (com.jar에 묶여있는 main메서드가 있는 클래스)
MAIN_PARAM=1111
​
nohub $JAVA_HOME/java -Xms256M -Xmx512M -Du=MainService -cp $JAR_FILE $MAIN_CLASS $MAIN_PARAM &
​
echo $!> Service.pid

stop.sh 파일

echo Service stop...

kill -9 'cat < Service.pid'
반응형