SSH 접속 끊어도 프로세스 돌아가도록 하기 : screen, disown, 백그라운드 작업
```bash
screen -S [sessionname] // session 생성 및 진입
```
새로운 session에서 프로세스 실행하면 SSH 끊어도 생성한 session과 프로세스가 계속 실행된다.
```bash
Ctrl-a, d || screen -d // session 실행은 유지하면서 원래 shell로 나가기
```
----------- SSH 접속 종료 -----------
. . . . . . . . . . . . . . . . . . . . . . . . .
----------- 다시 SSH 접속 -----------
```bash
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 목록 및 선택 ``c Ctrl+a, "``
새 windows 만들기 ``c Ctrl+a, c``
windows로 이동 ``c Ctrl+a, <num>``
이미 실행했을 때
- [Ctrl + z]를 눌러서 해당 프로그램을 정지(pause)시킨 후 shell로 돌아간다.
- `` bg %{id}`` 명령어를 쳐서 정지 상태의 해당 프로그램을 background에서 실행시킨다.
- `` disown -h`` 명령어를 쳐서 ssh 연결이 끊어져도 해당 프로세스가 돌아가도록 만든다.
백그라운드, 포그라운드
쉘에서 빠져 나와도 작업 계속 진행하도록 하기
```bash
$ screen <command>
$ nohup <command> [&]
```
둘 다 안된다면? 그냥 bg 실행한 다음 disown하면 된다.
백그라운드 작업으로 돌리기
```bash
$ <command> &
또는 이미 fg에서 실행되고 있는 작업이라면
(ctrl + z)
$ bg [작업번호] 이렇게 해야 Stop되었던 작업이 bg에서 이어서 실행된다.
disown으로 끊어주어 shell 종료 시에도 작업이 진행될 수 있도록 설정
$ disown [%작업번호] [-a]
```
백그라운드 작업 확인
```
jobs // 백그라운드 작업 확인
fg [작업번호] // 포그라운드로 작업 재개
bg [작업번호] // 백그라운드로 작업 재개
```
'OS > LINUX & UNIX' 카테고리의 다른 글
shell prompt (bash, Oh My Zsh) (0) | 2020.01.10 |
---|---|
바이너리를 쉘 명령어로 등록하기 (+ 버전 관리, 멀티 패키지) (0) | 2019.05.14 |
gcc options (2) | 2017.10.01 |
libc 버전 문제 (0) | 2017.07.23 |
SSH Server 설정 (0) | 2017.05.22 |