강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

백그라운드(background)와 포그라운드(foreground)

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

백그라운드(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)로 전환하는 역할을 한다.

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  172 명