Background 작업으로 수행 하기 위해서는 명령 끝에 ‘&’ 를 붙여주면 된다.
rony@server:~$ ./target.sh &
- Foreground 에서 수행중인 작업을 Background로 보내기 위해서는 [Ctrl + ‘-‘]
- Foreground 작업을 일시중지 하기 위해서는 [Ctrl + ‘z’]
- Background 작업 목록 보기 명령은 job
nohup을 사용 시 터미널 종료 후에도 작업을 지속할 수 있다.
rony@server:~$ nohup target.sh &
이때 작업에 대한 표준 출력은 nohup.out 파일에 저장된다.
rony@server:~$ tail -f nohup.out
하지만 nohup의 경우 프로세스를 Foreground로 가져올 수 있는 방법이 없다. 이를 위해 screen을 사용 가능하다.
screen 설치
root@server:~# apt-get install screen
screen 실행
rony@server:~$ screen -S screen_name
screen에서 나갈 때에는 [Ctrl + ‘a’], [d]
screen 목록 확인
rony@server:~$ screen -list There is a screen on: 1011.caffe (02/10/2016 10:09:37 PM) (Attached) 1 Socket in /var/run/screen/S-rony.
screen 재접속
rony@server:~$ screen -x screen_name
screen STDOUT에 대한 기록을 남기고 싶을 경우 ‘-L’ 옵션을 주어 Log를 남긴다.
rony@server:~$ screen -L -S screen_name
로그는 screenlog.0 과 같은 파일 형태로 남는다.
screen 에서 마우스 힐을 이용한 스크롤을 가능하게 하려면 .screenrc 파일을 수정한다.
defscrollback 5000 termcapinfo xterm* ti@:te@
만약 screen이 서로 꼬여서 현재 사용중이지 않지만 attached 상태로 표기되어서, screen -r 시도 하는 경우 Attach to an already attached screen 문구와 함께 screen 접속이 불가한 경우 다음 명령을 수행한다.
screen -rd screen_name
-d (-r): Detach the elsewhere runing screen (and reattach here).
기존의 screen을 detach 하고 새로 attach를 시도하는 것임으로 다시 기존과 같이 사용 가능하다.
혹은
screen -x screen_name
-x: Attach to a not detached screen. (Multi display mode)
다만 -x 명령을 사용하는 경우 이전 스크린 크기에 고정되어 스크린 경계가 표시된다.