Post

SSH 접속 끊어도 프로세스 돌아가도록 하기 - screen, disown, 백그라운드 작업

1
2
screen -S [sessionname]    // session 생성 및 진입

새로운 session에서 프로세스 실행하면 SSH 끊어도 생성한 session과 프로세스가 계속 실행된다.

1
2
Ctrl-a, d || screen -d    // session 실행은 유지하면서 원래 shell로 나가기

———– SSH 접속 종료 ———– . . . . . . . . . . . . . . . . . . . . . . . . . ———– 다시 SSH 접속 ———–

1
2
3
4
5
screen -ls    // session list 출력
screen -r [[pid.]tty[.host]]    // 다시 session으로 되돌아가서 작업 결과 확인
screen -x [session]    // 간혹 -r 안될 때
exit || Ctrl-a, \    // windows 종료 -> session 종료 -> 기본 shell로 나감

  • session을 여러 개 열 수 있음.
  • session 하위에 여러 windows를 둘 수 있음.
  • session이 종료되면 하위 windows 작업이 모두 종료됨.
  • windows가 모두 종료되면 session도 종료됨. windows 목록 및 선택 Ctrl+a, "

새 windows 만들기 Ctrl+a, c

windows로 이동 Ctrl+a, <num>

이미 실행했을 때
  1. [Ctrl + z]를 눌러서 해당 프로그램을 정지(pause)시킨 후 shell로 돌아간다.
  2. bg %{id} 명령어를 쳐서 정지 상태의 해당 프로그램을 background에서 실행시킨다.
  3. disown -h 명령어를 쳐서 ssh 연결이 끊어져도 해당 프로세스가 돌아가도록 만든다.
백그라운드, 포그라운드

쉘에서 빠져 나와도 작업 계속 진행하도록 하기

1
2
3
$ screen <command>
$ nohup  <command> [&]

둘 다 안된다면? 그냥 bg 실행한 다음 disown하면 된다. 백그라운드 작업으로 돌리기

1
2
3
4
5
6
7
$ <command> &
또는 이미 fg에서 실행되고 있는 작업이라면
(ctrl + z)
$ bg [작업번호]      이렇게 해야 Stop되었던 작업이 bg에서 이어서 실행된다.
disown으로 끊어주어 shell 종료 시에도 작업이 진행될 수 있도록 설정
$ disown [%작업번호] [-a]

백그라운드 작업 확인

1
2
3
4
5
jobs           // 백그라운드 작업 확인
fg [작업번호]    // 포그라운드로 작업 재개
bg [작업번호]    // 백그라운드로 작업 재개

This post is licensed under CC BY 4.0 by the author.