쉘 스크립트 실행과 프로세스 관리
- 쉘 스크립트 실행 방법 (
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 |
작업 번호로 종료 |
'CS > OS' 카테고리의 다른 글
[Linux] 로그인 셸 (Login Shell) vs 비로그인 셸 (Non-login Shell) (0) | 2025.04.17 |
---|---|
[Linux] 리눅스 로그인 환경 설정 파일 구조 정리 (0) | 2025.04.17 |
[Linux] Crontab 개념 정리 (0) | 2025.04.17 |
[OS] vi 편집기 자주 사용하는 키 정리 (0) | 2025.04.03 |
[Linux] 리눅스 명령어 (0) | 2025.03.27 |
댓글