공든탑앱 열기

작업 제어: jobs·fg·bg·nohup

리눅스마스터 2급 · 프로세스 관리 · 약 11분

쉽게 말하면

명령 창 하나에서 여러 일을 동시에 다루는 방법이에요. 지금 보고 있는 일(앞), 뒤에서 알아서 도는 일(뒤), 잠시 멈춘 일을 오가요. 끝에 &를 붙이면 처음부터 뒤에서 돌아요.

시험용 정의

작업 제어는 한 셸에서 여러 작업을 포그라운드·백그라운드로 오가며 다루는 기능이다. &로 백그라운드 실행, Ctrl+Z로 정지, jobs로 목록, fg·bg로 전환한다.

비유로 이해하기

요리사가 냄비 여러 개를 다루는 것이다. 지금 젓고 있는 냄비(포그라운드), 불 위에서 알아서 끓는 냄비(백그라운드), 불 꺼 둔 냄비(정지).

자세히

포그라운드와 백그라운드

  • 포그라운드: 터미널을 차지하고 실행되는 작업. 끝날 때까지 프롬프트가 돌아오지 않고, 키보드 입력과 Ctrl+C·Ctrl+Z가 이 작업에 간다
  • 백그라운드: 터미널을 비워 둔 채 뒤에서 실행되는 작업. 바로 프롬프트가 돌아와 다른 명령을 칠 수 있다. 키보드 입력은 받지 못한다
  • 작업(job): 셸이 자기가 띄운 명령에 붙이는 번호(%1, %2). 그 셸 안에서만 통한다. 시스템 전체에서 쓰는 PID와는 다른 번호다

터미널을 닫거나 로그아웃하면 셸이 자기 작업들에게 SIGHUP(hang up, 연결 끊김) 시그널을 보내고, 대부분 프로그램은 이 시그널을 받으면 끝난다. nohup은 명령이 SIGHUP을 무시하게 해서 로그아웃한 뒤에도 계속 돌게 한다.

시험에 이렇게 나와요

확인 문제

Q1. vi로 파일을 편집하다 Ctrl+Z를 눌렀다. vi는 어떻게 될까?

  1. 자동 저장 후 종료된다
  2. 저장 없이 종료된다
  3. 로그아웃된다
  4. 정지된 채 백그라운드 작업으로 남아 fg로 돌아올 수 있다
정답 보기

4번 정지된 채 백그라운드 작업으로 남아 fg로 돌아올 수 있다

Ctrl+Z는 SIGTSTP를 보내 포그라운드 작업을 일시 정지시키고 셸로 돌아온다. jobs로 목록을 보고 fg로 다시 불러오거나 bg로 백그라운드에서 이어서 실행할 수 있다.

Q2. 현재 셸에서 백그라운드로 돌고 있는 작업 목록을 보는 명령은?

  1. top -b
  2. bg -l
  3. ps -b
  4. jobs
정답 보기

4번 jobs

jobs다. 지금 셸의 작업 번호와 상태를 보여 준다. ps는 셸과 상관없이 프로세스를 본다.

Q3. 포그라운드에서 실행 중인 작업을 백그라운드로 옮기려 한다. 먼저 누르는 키는?

  1. Ctrl+D
  2. Ctrl+\
  3. Ctrl+C
  4. Ctrl+Z
정답 보기

4번 Ctrl+Z

Ctrl+Z로 정지 → bg로 백그라운드에서 계속.

Q4. Ctrl+Z로 정지시킨 작업을 백그라운드에서 이어서 실행하는 명령은?

  1. bg
  2. nohup
  3. fg
  4. jobs
정답 보기

1번 bg

bg다. 멈춘 작업을 백그라운드에서 이어 실행한다. fg는 포그라운드(앞)로 가져온다.

Q5. 로그아웃한 뒤에도 작업이 계속 실행되게 하는 명령은?

  1. at
  2. bg
  3. nohup
  4. nice
정답 보기

3번 nohup

nohup (HUP 시그널 무시).

Q6. 2번 작업을 포그라운드로 가져오는 명령은?

  1. fg 2
  2. fg -2
  3. fg %2
  4. jobs -f 2
정답 보기

3번 fg %2

fg %2 (bash는 fg 2도 받아 주지만 표준 표기는 %2).

헷갈리기 쉬운 O·X

jobs 명령은 시스템 전체 사용자의 작업을 보여 준다.

정답 보기

X 현재 셸의 작업만.

nohup으로 실행한 명령의 출력은 기본적으로 nohup.out에 저장된다.

정답 보기

O 맞는 설명이다.

작업 번호와 PID는 같은 번호다.

정답 보기

X 작업 번호는 셸 안의 순번, PID는 시스템 전체 번호.

함께 보면 좋은 개념