본문 바로가기
IT

[리눅스 기초 #17] 터미널은 하나인데 몸이 두 개였으면? bg, fg로 작업 제어 마스터하기

by sunyjiny 2026. 1. 30.
반응형

리눅스 기초 시리즈의 17번째 시간입니다! 지난 시간에는 폭주하는 프로세스를 진압하는 top과 kill을 배웠죠. 그런데 가끔은 프로세스를 '죽이고' 싶지는 않지만, 지금 당장 터미널을 써야 해서 '비키게' 하고 싶을 때가 있습니다.

예를 들어, 10분 넘게 걸리는 AI 모델 학습을 돌려놨거나 무거운 Flutter 빌드를 시작했는데, "아차, 소스 코드 한 줄만 더 확인해 볼걸!" 하는 생각이 들 때 말이죠. 오늘은 터미널 하나를 마치 두 개처럼 사용하는 비결, **작업 제어(Job Control)**에 대한 저의 생생한 경험담을 공유합니다.


1. 나의 경험담: "멈출 수 없는 빌드, 그리고 찾아온 정적"

최근에 제 블로그(sunyjini.com)에 올릴 AI 관련 예제 코드를 리눅스 서버에서 테스트하고 있었습니다. 꽤 용량이 큰 데이터셋을 처리하는 파이썬 스크립트를 실행했는데, 아뿔싸! 스크립트가 실행되는 동안 터미널이 꽉 잡혀버려 다른 명령어를 아무것도 입력할 수 없게 되었습니다.

평소라면 새 터미널 창을 하나 더 열었겠지만(WSL2라면 탭을 하나 더 만들었겠죠), 문득 리눅스 자체의 기능을 써보고 싶었습니다. "이 녀석을 잠시 뒤로 밀어두고 다른 일을 할 수는 없을까?" 그때 제가 누른 마법의 키가 바로 **Ctrl + Z**였습니다.


2. Ctrl + Z: 실행 중인 작업을 잠시 '일시 정지'시키기

실행 중인 터미널에서 Ctrl + Z를 누르면 리눅스는 해당 작업을 즉시 중단하고 배경으로 밀어버립니다. 그리고 우리에게 다시 소중한 **프롬프트($)**를 돌려주죠.

실험 코드: 작업 중단하기

Bash
 
# 1. 100초 동안 대기하는 가상의 무거운 작업 실행
sleep 100

# 2. 실행 중 Ctrl + Z 입력
# [1]+  Stopped                 sleep 100

여기서 **[1]**은 이 작업의 **'작업 번호(Job ID)'**입니다. 이제 터미널을 자유롭게 쓸 수 있게 되었습니다. 하지만 sleep 100은 '일시 정지' 상태라 시간이 흐르지 않습니다. 이 녀석을 다시 일하게 하려면 어떻게 해야 할까요?


3. bg와 fg: 배경(Background)과 전경(Foreground) 사이의 이동

이제 배경으로 밀려난 작업을 다시 움직이게 해봅시다.

① bg (Background): "뒤에서 몰래 일해!"

일시 정지된 작업을 배경에서 계속 실행하게 만듭니다.

Bash
 
# 방금 멈춘 1번 작업을 배경에서 재개
bg %1

# [1]+ sleep 100 &  <-- 뒤에 &가 붙으며 배경에서 돌아가기 시작합니다.

② fg (Foreground): "다시 내 앞으로 와!"

배경에서 돌고 있거나 멈춘 작업을 다시 내 눈앞(전경)으로 가져옵니다.

Bash
 
# 배경의 1번 작업을 다시 내 앞으로 가져오기
fg %1

4. jobs: 현재 내 터미널의 보관함 확인하기

터미널 하나에서 여러 작업을 배경으로 보냈다면, 어떤 것들이 있는지 확인해야겠죠? 이때 jobs 명령어를 사용합니다.

실습: 여러 작업 관리하기

Bash
 
# 여러 작업을 배경에서 실행 (&를 붙이면 처음부터 배경에서 시작합니다)
sleep 200 &
sleep 300 &

# 작업 목록 확인
jobs

(▲ Action: jobs 명령어를 치면 현재 내가 관리하고 있는 '업무 리스트'가 주르륵 뜹니다. 번호를 보고 fg %2 식으로 원하는 녀석을 호출하면 됩니다.)


5. After: 멀티태스킹하는 개발자의 자세

이 기능을 익히고 나니 터미널 하나만 열려 있어도 전혀 답답하지 않았습니다.

  1. 무거운 작업을 &를 붙여 실행하거나 실행 중 Ctrl + Z -> bg로 보낸다.
  2. 터미널에서 다른 코드 수정이나 파일 탐색을 진행한다.
  3. 작업이 끝났을 즈음 fg로 가져와 결과를 확인한다.

이 과정이 손에 익으면 마치 터미널과 대화를 주고받는 듯한 기분이 듭니다.


6. 실험 요약 및 꿀팁

명령어 / 단축키 역할 비유
명령어 & 처음부터 배경에서 실행 예약 주문 넣기
Ctrl + Z 전경 작업을 일시 정지 및 배경으로 이동 하던 일 일단 멈추고 옆으로 밀어두기
jobs 배경 작업 리스트 확인 할 일 목록(To-do list) 보기
bg %번호 배경의 작업을 다시 실행 옆으로 밀어둔 일을 안 보이게 계속 시키기
fg %번호 배경 작업을 전경으로 가져오기 옆에 있던 일을 다시 책상 위로 가져오기

7. 마치며: 도구는 당신의 시간을 아껴줍니다

리눅스의 작업 제어는 단순한 명령어가 아니라 '효율적인 워크플로우' 그 자체입니다. 창을 여러 개 띄우는 것이 물리적 멀티태스킹이라면, bg와 fg를 쓰는 것은 논리적인 멀티태스킹이죠.

오늘의 인사이트: "터미널은 당신의 명령을 기다리는 하인이 아니라, 동시에 여러 일을 처리할 수 있는 유능한 비서다. 비서를 놀게 두지 마라."

오늘의 포스팅이 여러분의 터미널 라이프를 조금 더 쾌적하게 만들어 주었나요? 여러분은 어떤 작업을 배경으로 가장 많이 돌리시나요? (저는 주로 대용량 파일 압축이나 AI 모델 다운로드를 돌려놓곤 합니다.)

혹시 터미널을 아예 꺼도 작업이 멈추지 않게 만드는 마법의 명령어 nohup에 대해서도 궁금하신가요? 다음 시간에는 '로그아웃해도 살아남는 프로세스'에 대해 다뤄보겠습니다!

반응형