티스토리 뷰
*NIX 머신에 SSH (혹은 Telnet) 로 원격 접속을 하고 프로세스를 백그라운드로 실행하는 경우에 로그아웃(exit)시 실행 됐던 프로세스가 중지 되버리는 현상을 보게 된다. 이는 원격으로 접속한 Shell 이 SSH 연결을 끊는 경우 종료되면서 자식 프로세스에 모두 STOP 시그널을 전송하기 때문인데 이것을 회피하는 몇 가지 방법을 기술한다.
의존 관계 없이 백그라운드로 실행
prog.sh > /dev/null >2&1 &
모든 output 을 생략하고 백그라운드로 실행. 부모와 Shell 과 의존이 없기 때문에 SSH 연결이 종료 되어도 prog.sh 은 계속 실행 상태를 유지한다.
nohup
nohup prog.sh &
말 그대로 HUP 신호를 무시하는 명령어이다. 보다 자세한 설명은 위키를 참고하도록 하자.
screen
아마도 경우에 따라 가장 이상적인 방법일텐데 새로운 screen 환경을 만들고 그 안에서 prog.sh 을 실행한다. 그리고 screen 에서 detach 하도록 한다. detach 라는 단어를 보면 단숨에 알 수 있듯이 다시 screen 에 attach 해서 작업되고 있는 내용을 지켜볼 수 있다. 앞선 방법들과 비교했을 때 가장 큰 차이점이라고 할 수 있다. SSH 연결을 끊었다가 다시 접속을 하고 screen 에 attach 하면 마치 계속 화면을 출력 해놓은 것 같은 효과를 확인하게 된다.
'개발 > Linux' 카테고리의 다른 글
crontab 사용시 권한 주의 (0) | 2018.03.04 |
---|---|
리눅스 명령어 삼대장: find, grep, awk (6) | 2018.02.07 |
동적 메모리를 free하고 NULL로 세팅하는 이유 (4) | 2017.08.22 |
CR+LF 특수문자 (0) | 2017.06.22 |
glibc의 iconv를 아시나요? (2) | 2017.05.18 |
댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
- Total
- Today
- Yesterday