우분투 JAVA 백그라운로드 실행

[출처] http://yoongi.tistory.com/67


우분투(리눅스) 환경에서 JAVA 프로그램을 데몬처름 실행하고 싶을 때 아래와 같은 명령어로 실행하면 가능합니다. 
$ Java -jar {runnable.jar} &

위에서 '&' 문자는 백그라운드로 실행하도록하는 옵션값입니다.

그러나,  실행한 사용자가 로그아웃을 할 경우 사용자가 실행한 프로그램도 같이 종료되게 됩니다.
사용자가 로그아웃에도 영향을 받지 않고 시스템에서 백그라운드로 실행하도록 하는 명령어가 nohup 입니다.

nohup is a POSIX command to ignore the HUP (hangup) signal. The HUP signal is, by convention, the way a terminal warns dependent processes of logout.

  1. nohup 으로 실행하기
    $ nohup java -jar {runnable.jar} &  # 또는 nohup {쉘스크립트파일} &
  2. nohup 으로 실행한 프로세스 종료하기
    데몬으로 동작 중인 pid를 찾아서 kill 명령어로 해당 프로세스를 종료해야 합니다. 
    $ ps -ef | grep 'java -jar {runnable.jar} # 또는 ps -ef | grep {쉘스크립트파일} 

    # 위에서 확인한 PID를 이용하여 프로세스 종료
    $ kill -9 {PID}
  3. nohup.out 파일?
    nohup 으로 실행하면 실행 위치에 nohup.out 파일이 생성된다. 이 파일은 nohup 으로 실행한 프로세스에서 리다이렉션을 사용하지 않은 출력문자열이 자동으로 저장됩니다.
  4. nohup.out 파일 생성 안하기
    nohup.out 파일은 분할되지 않으므로 장시간 프로세스가 실행될 경우 파일이 커질 수 있습니다. 이것을 방지하기 위하여 nohup.out 파일을 생성하지 않는 방법이 있습니다.
    $ nohup 'java -jar {runnable.jar}' 1 > /dev/null 2 > &1 & 
    여기서 1은 표준 출력, 2는 표준 에러를 말하고 있습니다.  즉, 해당 프로세스의 표준 출력(1)을 /dev/null 로 표준 에러(2)는 표준 출력(1) 으로 리다이렉션 해주므로써 파일은 생성되지 않습니다.



출처: http://yoongi.tistory.com/67 [기억 공간]

댓글

이 블로그의 인기 게시물

spring boot as a windows service

Properties

PHP Date format