티스토리 뷰

*NIX 머신에 SSH (혹은 Telnet) 로 원격 접속을 하고 프로세스를 백그라운드로 실행하는 경우에 로그아웃(exit)시 실행 됐던 프로세스가 중지 되버리는 현상을 보게 된다. 이는 원격으로 접속한 ShellSSH 연결을 끊는 경우 종료되면서 자식 프로세스에 모두 STOP 시그널을 전송하기 때문인데 이것을 회피하는 몇 가지 방법을 기술한다. 


의존 관계 없이 백그라운드로 실행

prog.sh > /dev/null >2&1 &

모든 output 을 생략하고 백그라운드로 실행. 부모와 Shell 과 의존이 없기 때문에 SSH 연결이 종료 되어도 prog.sh 은 계속 실행 상태를 유지한다.


nohup

nohup prog.sh &

말 그대로 HUP 신호를 무시하는 명령어이다. 보다 자세한 설명은 위키를 참고하도록 하자.


screen

아마도 경우에 따라 가장 이상적인 방법일텐데 새로운 screen 환경을 만들고 그 안에서 prog.sh 을 실행한다. 그리고 screen 에서 detach 하도록 한다. detach 라는 단어를 보면 단숨에 알 수 있듯이 다시 screenattach 해서 작업되고 있는 내용을 지켜볼 수 있다. 앞선 방법들과 비교했을 때 가장 큰 차이점이라고 할 수 있다. SSH 연결을 끊었다가 다시 접속을 하고 screenattach 하면 마치 계속 화면을 출력 해놓은 것 같은 효과를 확인하게 된다.



댓글
댓글쓰기 폼