원격 머신에서 작업을 하고 있습니다.

물론 서버겠지요.

시간이 오래 걸리는 작업이라 몇시간을 걸어 두어야 할 것 같습니다.


그런데 창을 내려 놓고 작업을 하다가 재실행을 해야 할 필요가 생겼습니다.

이런 원격 머신에서 작업 하던 것을 멈추면 처음부터 다시 실행해야 합니다.

이럴때 원격 머신의 작업을 계속하게 설정을 해 놓으면 좋겠죠?


개념은 리눅스의 프로세스는 부모를 갖게 됩니다.

실행시켜 놓은 명령을 로그 아웃을 하게 되면 전부다 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 로 보시면 로그아웃하기 전에는 현재 로그인 쉘에 붙어 있습니다만

로그아웃후에 다시 로그인 하시면 그 상위 프로세스로 이사를 한 것을 알수 있습니다.

궁금하면 직접 해보시길... ^^