백그라운드(background)와 포그라운드(foreground)
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,273 조회
- 0 추천
- 목록
본문
백그라운드(background)와 포그라운드(foreground)
일반적으로 모든 프로세스는 실행당시에 포그라운드로 실행된다고 설명하였다.
하지만 실행시에 백그라운드로 실행하는 방법이 있다.
즉 쉘상태에서 특정 명령을 실행할 때부터 백그라운드로 실행할 수 있는 방법이 있다.
즉 명령행의 끝에 "&"를 붙이면 어떤 작업이든 처음부터 백그라운드로 실행된다.
아래의 예는 앞의 사용 예를 명령실행 처음부터 백그라운드로 실행하기 위하여 "&"를 붙여둔 것이다.
[root@sulinux backup]# tar cvfz /backup/etc.tar.gz /etc >& /dev/null & [1] 2305 [root@sulinux backup]# [root@sulinux backup]# [root@sulinux backup]# jobs [1]+ Running tar cvfz /backup/etc.tar.gz /etc >&/dev/null & [root@sulinux backup]# [root@sulinux backup]# |
그리고 jobs라는 명령어로 이를 백그라운드(&)로 실행(Running)하고 있다는 것을 확인한 것이다.
이번에는 이미 실행중인 프로세스를 백그라운드로 전화하는 예를 보도록하자. 다음과 같이 tar로 특정폴더를 압축하는 명령을 실행하였다.
여러분들도 잘 알겠지만 용량이 클 경우에 tar로 압축하는 시간이 많이 소요된다.
따라서 이 작업을 백그라운드로 전환시킨 예이다.
아래 명령은 tar로 /usr디렉토리 전체를 압축하는 명령이다.
이 작업의 실행시간이 너무 많이 소요되므로 일단 멈추기 위하여 "^Z"로 우선 멈춤을 하였다.
"^Z"를 입력하면 현재 실행중인 작업을 일단 멈추고 쉘프롬프트에서 대기한다.
[root@sulinux backup]# tar cvfz /backup/usr.tar.gz /usr >& /dev/null ^Z
[1]+ Stopped tar cvfz /backup/usr.tar.gz /usr >&/dev/null [root@sulinux backup]# [root@sulinux backup]# |
이 상태에서 현재 실행상황을 확인하기 위하여 jobs라는 명령을 실행한 것이다.
실행결과 아래 보는 바와 같이 좀 전에 "^Z"를 눌러서 실행멈춤(Stopped)이 된 프로세스가 작업번호 1에 있다는 것을 확인할 수 있을 것이다.
[root@sulinux backup]# jobs [1]+ Stopped tar cvfz /backup/usr.tar.gz /usr >&/dev/null [root@sulinux backup]# |
이 상태에서 작업을 백그라운드로 전환하기위하여 아래와 같이 "bg %1"을 입력한 것이다.
이렇게 백그라운드로 작업을 진행하면 프로세스는 그대로 실행되면서 쉘상태에서 다른 작업을 할 수가 있다.
[root@sulinux backup]# bg %1 [1]+ tar cvfz /backup/usr.tar.gz /usr >&/dev/null & [root@sulinux backup]# [root@sulinux backup]# jobs [1]+ Running tar cvfz /backup/usr.tar.gz /usr >&/dev/null & [root@sulinux backup]# [root@sulinux backup]# |
다시 jobs라는 명령으로 현재 실행중인 프로세스를 확인하여 본 결과 백그라운드로 실행중(Running)이라는 표시인 "&"가 되어있다는 것을 확인할 수 있다.
당연한 얘기지만 조금 전에 실행한 tar명령어는 지금도 계속 실행되고있다는 의미이다.
즉, 이렇게 bg를 이용하면 실행중인 프로세스를 백그라운드모드로 전환이 가능하며 실행 중 다른 작업을 할 수 있다.
지금까지는 백그라운드로 실행하는 방법과 이미 실행중인 프로세스를 백그라운드로 전환하는 방법에 대해서 알아보았다.
이번에는 이와 반대로 백그라운드모드의 프로세스를 포그라운드로 전환하는 방법에 대해서 보도록하겠다.
이번 예를 위하여 다음과 같이 tar로 /usr 디렉토리의 전체내용을 압축하는 명령을 실행 하였다.
별다른 옵션없이 실행을 하였으므로 이 프로세스는 foreground모드로 실행되었다.
따라서 이 프로세스가 종료되기 전까지 사용자는 어떠한 작업도 할 수 없다.
이 프로세스의 실행이 오랫동안 지속되므로 필자는 "^Z"를 눌러서 프로세스를 일시적으로 멈추었다.
그리고 jobs를 실행하여 잠시 멈춰둔 프로세스의 상태를 확인하였다.
그리고 "bg %1"을 입력하여 이 프로세스를 백그라운드로 전환하였다.
그런 후에 백그라운드로 실행중인 프로세스를 확인하기 위하여 jobs명령을 입력한 것이다.
[root@sulinux /]# tar cvfz /backup/usr.tar.gz /usr >& /dev/null ^Z
[1]+ Stopped tar cvfz /backup/usr.tar.gz /usr >&/dev/null [root@sulinux /]# [root@sulinux /]# jobs [1]+ Stopped tar cvfz /backup/usr.tar.gz /usr >&/dev/null [root@sulinux /]# [root@sulinux /]# bg %1 [1]+ tar cvfz /backup/usr.tar.gz /usr >&/dev/null & [root@sulinux /]# [root@sulinux /]# jobs [1]+ Running tar cvfz /backup/usr.tar.gz /usr >&/dev/null & [root@sulinux /]# |
현재 tar 명령으로 수행된 프로세스는 백그라운드모드로 수행중이다.
이 프로세스를 다시 전면부프로세스(foreground process)로 실행하기 위하여 다음과 같이 "fg % 1"을 입력한 것이다.
[root@sulinux /]# [root@sulinux /]# fg %1 tar cvfz /backup/usr.tar.gz /usr >&/dev/null
|
이와 같이 fg명령어는 백그라운드로 실행중인 프로세스를 다시 전면부프로세스(foreground process)로 전환하는 역할을 한다.
관련자료
-
이전
-
다음