본문 바로가기
CS/OS

[Linux] 쉘 스크립트 실행과 프로세스 관리

by clolee 2025. 4. 17.

쉘 스크립트 실행과 프로세스 관리

  • 쉘 스크립트 실행 방법 (sh, ./파일.sh)
  • 프로세스 개념과 PID
  • foreground / background 실행 방식
  • 백그라운드 작업 관리 명령어 (jobs, fg, bg, kill)
  • 데몬과 일반 스크립트의 차이

✅ 쉘 스크립트와 실행


📌 .sh: 쉘 스크립트 파일

  • 확장자 .sh쉘(Shell)에서 실행될 수 있는 스크립트 파일
  • 윈도우에서 .bat(배치파일)과 유사한 역할
  • 기본적으로 bash, sh, zsh 등의 셸에서 실행됨

✅ 쉘 스크립트 실행 방법

실행 방식 설명 예시
sh 파일명.sh 현재 셸에서 sh 명령어로 실행 sh ex01.sh
./파일명.sh 실행 권한 부여 후 직접 실행 chmod +x ex01.sh./ex01.sh

🔸 sh ex01.sh는 "sh 셸에서 파일을 해석해 실행"

🔸 ./ex01.sh는 "파일에 실행 권한을 주고 실행"


wc -l 옵션

명령어 설명
wc (word count) 줄 수, 단어 수, 바이트 수 등을 출력
wc -l 줄(line) 수만 출력
예시 `cat file.txt

✅ 프로세스(Process)의 개념


📌 프로세스란?

  • 실행 중인 프로그램 인스턴스
  • 프로그램을 실행하면 OS는 메모리를 할당하고 고유한 프로세스 ID (PID)를 부여하여 프로세스를 생성

✅ PID (Process ID)

개념 설명
PID 프로세스 고유 번호
번호가 작은 PID 시스템이 자동으로 띄운 기본 프로세스일 가능성 높음 (init, systemd 등)
ps -ef 시스템 전체 프로세스 목록 출력 (표 형식)
pstree 프로세스 트리 구조 출력 (부모-자식 관계 확인 가능)

 

 

ps -ef 결과

 

pstree 결과


✅ 포그라운드(Foreground) vs 백그라운드(Background)


✅ Foreground 실행

🔷 설명

사용자 터미널을 점유

실행 중에는 터미널에서 다른 명령어 입력 불가

무한 루프 스크립트면, 종료 전까지 제어 불가능

중단하려면 Ctrl + C 사용

📌 예시

./ex01.sh


✅ Background 실행

🔷 설명

터미널을 점유하지 않고 백그라운드에서 실행

백그라운드로 실행해도 명령어는 실행됨

결과는 출력되거나 로그 파일로 저장 가능

터미널에서 다른 명령 계속 입력 가능

프로세스 제어는 jobs, fg, kill 등으로 가능

📌 예시

./ex01.sh &


& 기호

  • 쉘에서 명령 뒤에 &를 붙이면 해당 프로세스를 백그라운드로 실행
  • 예시:
  • ./run_forever.sh &

✅ 백그라운드 작업 관리 명령어


jobs

설명 예시
현재 셸에서 실행 중인 백그라운드 작업 목록 출력 jobs
출력 예시:  
[1]+ Running ./ex01.sh &

fg (foreground)

설명 예시
백그라운드 작업을 다시 포그라운드로 전환 fg %1 (작업 번호 1번)
번호는 jobs 명령으로 확인 가능  

bg

설명 예시
일시 중지된 작업을 백그라운드에서 계속 실행 bg %1

kill (프로세스 종료)

형태 설명 예시
kill PID 지정한 프로세스 종료 kill 12345
kill %작업번호 백그라운드 작업 종료 kill %1
kill -9 PID 강제 종료 (SIGKILL) kill -9 12345

✅ 요약 흐름 예시

./loop.sh &         # 백그라운드 실행
jobs                # 현재 백그라운드 작업 확인
fg %1               # 백그라운드 → 포그라운드로 전환
Ctrl + Z            # 포그라운드 → 일시 중지
bg %1               # 중지된 작업 다시 백그라운드 실행
kill %1             # 백그라운드 작업 종료

✅ 데몬(Daemon)과 쉘 스크립트는 다르다

항목 데몬 (Daemon) 쉘 스크립트 (.sh)
백그라운드 서비스 O 일반적으로 X
자동 재시작 보통 있음 없음
예: cron, sshd, systemd O 쉘 스크립트는 직접 실행해야 함
쉘 스크립트를 데몬처럼 쓰려면? & 또는 systemd, nohup 활용 필요  

🔸 즉, 단순히 .sh & 로 백그라운드 실행된 스크립트는 데몬이 아님

데몬은 일반적으로 지속적인 서비스 + OS에 등록된 서비스 프로세스


✅ 전체 명령어 요약 표

명령어 용도
sh file.sh 스크립트 실행 (sh 셸 사용)
./file.sh 실행 권한 부여 후 실행
wc -l 줄 수 세기
ps -ef 전체 프로세스 목록 보기
pstree 프로세스 계층 구조 보기
& 명령어를 백그라운드 실행
jobs 현재 셸의 백그라운드 작업 확인
fg %N 백그라운드 → 포그라운드
bg %N 일시중지 → 백그라운드 계속 실행
kill PID 프로세스 종료
kill %N 작업 번호로 종료

댓글