프로그램 백그라운드에서 실행하기 (nohup 명령어)


knoow 2016.06.22 16:31
원글출처 : http://knoow.tistory.com/89


서버프로그램 개발 중 터미널에서 관련 실행파일을 돌리고 있는데, 문득 드는 생각 '프로그램 2개를 돌리려면 터미널을 2개 열어야하나?'


그럴리는 없다고 생각하고 바로 리눅스에서 백그라운드로 실행하는 방법을 검색


여러가지 방법이 있겠지만, 가장 간단한 방법이 nohup 명령어를 사용하는 방법이다.


<실행 방법>


1. 백그라운드에서 돌리기 위한 실행파일을 준비한다. (나의 실행파일 이름은 main.js)


2. 명령어 입력하면 끝

# nohup node /절대 경로/main.js &


*구체적으로 노드를 nohup으로 구동하는 명령어

1) 일반 실행


[root@localhost myWebRtc]# node server.js

Socket IO server has been started


- 내 ssh 프로세스가 node server.js 프로세스에 묶여버려 다른작업을 아무것도 하지 못한다.



2) Background 실행


[root@localhost myWebRtc]# nohub node server.js & (단, 현재 디렉토리에 파일이 있다는 가정)

[1] 31498


- Background Process로 실행되어 


내가 실행하려고 했던 node.js 웹서버가 돌아가는 도중에도 동시에 다른 리눅스 명령어를 칠 수 있다.





3. 잘 돌아가는지 확인

# ps -aux | grep main.js




<중지하는 방법>


ps 명령어로 PID 값을 찾은 후, kill 명령어로 프로세스를 종료시킨다.

# ps -ef | grep a.out

# kill -9 PID번호





※참고


nohup 명령어를 사용하면 명령어를 사용한 디렉토리에 nohup.out 이라는 파일이 자동 생성된다.(예를 들어, /dev/project/priceOnEachMarketWebVersion 에서 nohup를 실행시켰다면, 그 디렉토리 직하에 nohup.out이라는 파일이 생선된다.)



이 파일에는 nohup으로 실행하는 명령의 출력이 기록되어진다.


이 파일을 생성하고 싶지 않다면 /dev/null에 출력하도록 하면 된다.

# nohup echo hello > /dev/null 




출처: http://knoow.tistory.com/89 [ICT Story]

+ Recent posts