Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

codingfarm

프로세스 - 포그라운드와 백그라운드 본문

Linux/Ubuntu

프로세스 - 포그라운드와 백그라운드

scarecrow1992 2021. 3. 6. 15:34

3. 포그라운드, 백그라운드 프로세스와 작업 제어

3.1 포그라운드 작업과 백그라운드 작업

포그라운드 작업(foreground job)

  • 사용자가 입력한 명령이 실행되어 결과가 출력될 때까지 기다리는 방식으로 처리되는 작업 
    • ex) 터미널에서 작업할 때 일반적으로 사용자가 명령을 입력하면 셸이 그 명령을 해석하여 실행하고 결과를 화면에 출력한다. 그러면 사용자는 화면에 출력된 결과를 봐야 다시 명령을 입력할 수 있는 대화식으로 작업을 수행한다.
  • 포그라운드 프로세스 : 포그라운드 작업방식으로 처리되는 프로세스
>> sleep 100      // foreground job
                       // sleep 명령이 끝날 때까지 기다려야 한다.

 

 

백그라운드 작업(background job)

  • 사용자가 입력한 명령이 끝나는것과 상관없이 곧바로 프롬프트가 출력되어 다른 작업을 진행할 수 있는 작업
  • 백그라운드 프로세스 : 박그라운드 작업방식으로 처리되는 프로세스
  • 명령을 백그라운드 방식으로 실행하려면 명령의 마지막에 & 기호를 추가한다.
>> sleep 100 &  // background job
>>                  // 프롬프트가 바로 나와 다른 명령을 실행할 수 있다.

 

 

백그라운드 작업과 출력 방향 전환하기

  • 백그라운드로 실행되는 프로그램이 출력을 작업중인 콘솔에 띄우면 결과가 뒤섞여 제대로 확인하기 어려워진다.
  • 백그라운드로 처리할때는 아래처럼 출력과 오류 방향을 전환하여 실행 결과와 오류 메시지를 파일로 저장하는 방법을 많이 사용한다.
>> find / -name passwd > pw.dat 2>&1 &    // pw.dat에 결과와 오류를 저장한다.

 

 

3.2 작업 제어(job control)

  • 작업 제어 도구(job control tool) : 한 터미널에서 동시에 프로세스를 실행하고 관리한다.
  • 작업 제어(job control) : 작업 전환, 작업 일시 중지, 작업 종료를 뜻한다.
    • 작업 전환 : 포그라운드 작업과 백그라운드 작업간의 전환
    • 작업 일시 중지 : 작업을 잠시 중단
    • 작업 종료 : 프로세스를 종료하듯이 작업을 종료
  • 작업(job) : job control tool이 관리하는 process

 

 

작업 목록 보기

jobs 명령

 

 

작업 전환하기

명령 기능
Ctrl+z 또는 stop [%작업번호] 포그라운드 작업을 정지한다(종료가 아님)
bg [%작업번호] 작업번호가 지시하는 작업을 백그라운드 작업으로 전환한다.
fb [%작업번호] 작업번호가 지시하는 작업을 포그라운드 작업으로 전환한다.

vim과 sleep 명령을 포그라운드 작업으로 실행한 후, Ctrl + z 명령으로 일시 정지 시킨 모습이다.

 

 

작업 종료하기

  • 포그라운드 작업은 ctrl+c를 입력하면 대부분 종료된다.
  • ctrl + c는 인터럽트 시그널을 포그라운드 프로세스에 전달하며, 인터럽트를 받으면 기본적으로 프로세스를 종료하도록 되어있다.
  • 터미널에서 해당 프로세스의 PID를 찾아 kill 명령으로 종료해도 된다.

 

 

로그아웃 후에도 백그라운드 작업 계속 실행하기

  • 아래의 작업이 실행되면 백그라운드 작업이 종료된다.
    • 작업을 실행한 터미널이 종료 or 사용자가 로그아웃
  • nohup 명령을 쓰면 로그아웃한 후에도 백그라운드 작업의 실행이 지속된다.
nohup 명령&

nohup 명령을 사용할 때는 반드시 백그라운드로 실행해야 한다.

 

 

 

'Linux > Ubuntu' 카테고리의 다른 글

프로세스 관리 - 작업 예약  (0) 2021.03.06
프로세스 관리 - 개념, 관리 도구  (0) 2021.03.06
특수 접근 권한 SetUID, SetGID  (0) 2021.03.05
입출력 방향 바꾸기  (0) 2020.11.15
shell  (0) 2020.11.04
Comments