Bash Shell Script 백그라운드 실행 (&, jobs, fg, bg)
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 파일 입출력 (cat, tee, >) (0) | 2025.02.01 |
|---|---|
| Bash Shell Script 프로세스 종료 및 제어 (kill, ps, top) (0) | 2025.01.31 |
| 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 |