Linux Bash 스크립트를 사용하다 보면 백그라운드 실행을 다룰 일이 자주 생깁니다. 백그라운드 실행은 작업을 비동기적으로 처리하거나 시스템의 효율을 높이는 데 유용합니다. 오늘은 백그라운드 실행의 개념과 이를 다루는 &
, jobs
, fg
, bg
명령어에 대해 알아보고, 실제 예제 코드를 통해 어떻게 활용하는지 살펴보겠습니다.
1. 백그라운드 실행이란?
백그라운드 실행은 특정 작업을 현재 터미널 세션에서 독립적으로 실행하여, 사용자가 다른 작업을 계속 수행할 수 있도록 합니다. 이를 위해 명령어 끝에 &
를 붙이면 됩니다.
예제
# 간단한 백그라운드 실행
sleep 10 &
echo "Sleep 명령어가 백그라운드에서 실행됩니다."
위 코드를 실행하면 sleep 10
명령어는 백그라운드에서 실행되고, 터미널은 즉시 다음 명령어를 받을 준비가 됩니다.
2. jobs
명령어로 작업 관리하기
jobs
명령어는 현재 세션에서 실행 중인 백그라운드 작업들의 상태를 확인할 수 있도록 도와줍니다.
주요 옵션
jobs -l
: 각 작업의 PID(프로세스 ID)를 함께 출력합니다.jobs -p
: 작업 ID 대신 PID만 출력합니다.
예제
# 백그라운드에서 작업 실행
sleep 20 &
sleep 30 &
# 백그라운드 작업 확인
jobs
# 출력 예시
# [1]+ Running sleep 20 &
# [2]- Running sleep 30 &
3. fg
명령어로 작업을 포어그라운드로 가져오기
백그라운드에서 실행 중인 작업을 다시 포어그라운드로 전환하려면 fg
명령어를 사용합니다.
사용법
fg %[job_number]
: 특정 작업 번호를 포어그라운드로 전환합니다.
예제
# 백그라운드에서 실행
sleep 15 &
# 작업 목록 확인
jobs
# 특정 작업을 포어그라운드로 전환
fg %1
위 예제에서 fg %1
명령어는 작업 번호 1번을 포어그라운드로 전환합니다.
4. bg
명령어로 백그라운드 작업 재개하기
bg
명령어는 중단된(suspended) 작업을 백그라운드에서 재개할 때 사용합니다.
예제
# 포어그라운드에서 실행 후 중단
sleep 100
# Ctrl+Z 입력으로 중단
# 중단된 작업 확인
jobs
# 작업을 백그라운드에서 재개
bg %1
위 예제에서 Ctrl+Z
를 사용해 작업을 중단한 뒤, bg %1
명령어로 백그라운드에서 다시 실행합니다.
5. 실전 예제: 백그라운드에서 다수의 작업 실행 및 관리
여러 작업을 백그라운드에서 실행하고 이를 관리하는 예제를 살펴봅니다.
예제
#!/bin/bash
# 여러 명령어를 백그라운드에서 실행
sleep 20 &
process1=$!
echo "첫 번째 작업 PID: $process1"
sleep 30 &
process2=$!
echo "두 번째 작업 PID: $process2"
# 작업 목록 확인
jobs
# 첫 번째 작업을 포어그라운드로 전환
fg %1
# 두 번째 작업을 중단 후 백그라운드에서 재개
kill -STOP $process2
kill -CONT $process2
코드 설명
&
를 사용해 두 개의 작업을 백그라운드에서 실행합니다.$!
는 최근 실행된 백그라운드 작업의 PID를 저장합니다.jobs
로 작업 목록을 확인합니다.- 첫 번째 작업은
fg
로 포어그라운드에서 실행합니다. - 두 번째 작업은
kill
명령어를 사용해 중단(STOP) 및 재개(CONT)합니다.
6. 유용한 팁과 주의사항
6.1 SIGSTOP과 SIGCONT 활용
kill
명령어를 사용하면 특정 작업을 중단시키거나 재개할 수 있습니다.
# 특정 PID의 작업 중단
kill -STOP <PID>
# 특정 PID의 작업 재개
kill -CONT <PID>
6.2 백그라운드 실행 시 로그 관리
백그라운드 실행 작업의 로그를 파일로 리디렉션하여 관리할 수 있습니다.
# 로그를 파일로 저장하며 백그라운드 실행
my_program > program.log 2>&1 &
결론
Bash에서 백그라운드 실행은 작업 효율을 높이고 시스템 자원을 효과적으로 활용하는 데 중요한 역할을 합니다. 오늘 배운 &
, jobs
, fg
, bg
명령어와 함께 kill
을 활용하면 백그라운드 작업을 더 유연하게 관리할 수 있습니다.
앞으로 스크립트 작성 시 오늘 배운 내용을 적극 활용해 보세요!
'Linux Bash shell script' 카테고리의 다른 글
Bash Shell Script 디렉토리 탐색 (find, xargs) (0) | 2025.01.29 |
---|---|
Bash Shell Script 파일 생성, 삭제, 복사 (touch, rm, cp, mv) (0) | 2025.01.29 |
Bash Shell Script 문자열 조작 (cut, awk, sed 활용) (0) | 2025.01.28 |
Bash Shell Script 배열 선언 및 접근 방법 (0) | 2025.01.27 |
Bash Shell Script 매개변수와 반환값 처리 (0) | 2025.01.26 |