336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

원래는 VMWare Player 를 애용하고 있었지만, 게스트(Guest) 머신(?)을 백그라운드로 구동하는 방법을 찾다가 VirtualBox로 갈아타게 되었습니다. 


가상머신의 주 용도는 윈도우 환경에서 개발하기 어려운 것을 가상머신을 설치하여 Ubuntu 환경에서 개발하기 위해서 였습니다. 그런 용도로 사용하기 때문에 Ubuntu 가 구동 중인 화면이 필요하지 않았습니다. 

VMWare Playper 로 가능한지 모르겠지만, 찾을 수 없었고, VirtualBox 를 이용하면 가능하다는 것을 알게되었습니다. 


VirtualBox 를 설치하고 게스트 OS를 설치하고 아래와 같이 실행하면 화면이 없이 Guest OS가 실행되는 것을 확인할 수 있습니다. 



C:\Program Files\Oracle\VirtualBox> VBoxManager.exe startvm {가상머신이름} --type headless
# 위와 같이 실행하면 {가상머신이름}을 구동합니다. 그리고 정상 구동이되면 아래와 같은 메시지를 확인할 수 있습니다.
Waiting for "{가상머신이름}" to power on...
VM "VM-DEV" has been successfully started.

C:\Program Files\Oracle\VirtualBox> 


실행된 VM 제어하기


※ 위 명령어를 실행 후 "Oracle VM VirtualBox 관리자"를 실행하면 해당 Guest OS를 선택하면 미리보기 화면에 해당 OS가 부팅된 화면을 볼 수 있습니다. 


[참고] http://www.virtualbox.org/manual/ch08.html#vboxmanage-startvm

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

우분투(리눅스) 환경에서 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.

[출처] http://en.wikipedia.org/wiki/Nohup


  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) 으로 리다이렉션 해주므로써 파일은 생성되지 않습니다.

  5. nohup.out 파일 이름 변경