강좌 & 팁
원격 머신에서 작업을 하고 있습니다.
물론 서버겠지요.
시간이 오래 걸리는 작업이라 몇시간을 걸어 두어야 할 것 같습니다.
그런데 창을 내려 놓고 작업을 하다가 재실행을 해야 할 필요가 생겼습니다.
이런 원격 머신에서 작업 하던 것을 멈추면 처음부터 다시 실행해야 합니다.
이럴때 원격 머신의 작업을 계속하게 설정을 해 놓으면 좋겠죠?
개념은 리눅스의 프로세스는 부모를 갖게 됩니다.
실행시켜 놓은 명령을 로그 아웃을 하게 되면 전부다 kill 이 되어 버리죠.
왜냐하면 로그인한 부모 프로세스가 죽어 버리기 때문입니다.
그럼 프로세스를 죽이지 않고 그 부모 프로세스에게 인계하면 안될까요?
그런 것을 가능하게 해주는 것이 바로 nohub 입니다.
물론 스탠다드 입력 출력은 설정해 주어야 합니다.
표준 입력은 null 로 출력은 파일로 지정하면 입력은 없고
출력은 파일로 저장해 주겠죠?
아래 명령처럼 실행해 보세요
boggle70@boggle70-15ND530-PX7SK:~$ nohup ping 192.168.10.1 < /dev/null > ./nohub.out &
[1] 6027
boggle70@boggle70-15ND530-PX7SK:~$ nohup: redirecting stderr to stdout
boggle70@boggle70-15ND530-PX7SK:~$ ps
PID TTY TIME CMD
5895 pts/5 00:00:00 bash
6027 pts/5 00:00:00 ping
6029 pts/5 00:00:00 ps
이제 입력과 출력이 redirect 되었습니다.
그런데 정말 부모 프로세스에게 인계되었나요?
pstree -p 로 보시면 로그아웃하기 전에는 현재 로그인 쉘에 붙어 있습니다만
로그아웃후에 다시 로그인 하시면 그 상위 프로세스로 이사를 한 것을 알수 있습니다.
궁금하면 직접 해보시길... ^^