ssh로 프로그램 실행 시 ssh가 끊겨도 계속 돌리는 방법

By | 2014/08/08

  원격의 Linux 컴퓨터에 작업을 할 때 ssh로 접속해서 돌리는 경우가 많습니다. 하지만 클라이언트 컴퓨터의 이유로 인해 (클릭 미스, OS 다운, 시스템 업데이트로 인한 재부팅 등) ssh 연결을 끊어야 하는 경우가 있습니다. 그럼에도 아직 프로그램이 (특히 실험 프로그램)이 끝나지 않아서 곤란한 경우가 많습니다.

  이를 해결하기 위해서 많은 사람들이 추천하는 방법이 바로 GNU Screen입니다.

http://www.gnu.org/software/screen/

  이것을 사용자 입장에서 설명하자면 여러 개의 terminal (혹은 shell)을 만들어내는 프로그램입니다. 따라서 여러 개의 터미널 작업을 한 번의 ssh 접속으로 가능한 것이지요. 이에 더해 ssh 접속이 끊어지더라도 해당 터미널은 여전히 살아 있다는 것이 가장 큰 장점입니다. 즉, 앞에서 얘기한 문제가 말끔히 해결된다는 것입니다.

 

  하지만 귀차니즘으로 인해 별 생각 없이 프로그램을 돌리는 경우가 있습니다. 그러다가 재부팅을 해야할 상황이 왔을 때 참으로 난감해지죠. 재부팅을 하면 ssh 연결이 끊여져서 지금까지 돌리던 프로그램이 그대로 종료되어버리니까요.

  이를 해결할 수 있는 방법을 찾아보았고, 그것을 찾았기에 여기에 적습니다.

 

  1. 현재 프로그램이 돌고 있습니다. 제가 확인한 상황은 Java 프로그램이 돌고 있는 상황입니다. 즉, Java -jar 명령어를 이용해 실험을 돌리고 있는 것입니다.
  2. ‘Ctrl + z’를 눌러서 해당 프로그램을 정지(pause)시킨 후 shell로 돌아갑니다.
  3. ‘bg’ 명령어를 쳐서 해당 프로그램을 background로 보내어 돌려버립니다.
  4. ‘disown -h’ 명령어를 쳐서 ssh 연결이 끊어져도 해당 프로세스가 돌아가도록 합니다.
  5. 이제 안전하게 ssh 연결을 종료하셔도 됩니다. (Windows 도움말 같네요.)

 

  자세한 내용은 아래의 참고 URL을 보시면 잘 설명이 되어 있습니다.

  훗날 이 방법이 다시 필요하지 않을까 싶어 글로 남깁니다.

 

  참고 URL

Leave a Reply