728x90
반응형
Bash Shell Script 프로세스 종료 및 제어 (kill, ps, top)
Linux에서 프로세스는 시스템 자원을 효율적으로 관리하고 작업을 수행하기 위해 필수적인 요소입니다. 이번 포스팅에서는 프로세스를 관리하고 종료하는 데 유용한 kill, ps, 그리고 top 명령어를 소개하겠습니다. 또한 각 명령어의 사용 예제와 함께 실습할 수 있도록 간단한 스크립트를 제공합니다.
1. 프로세스 확인 (ps 명령어)
ps 명령어는 현재 실행 중인 프로세스를 확인하는 데 사용됩니다. ps 명령어는 다양한 옵션을 제공하여 원하는 프로세스 정보를 필터링하거나 형식을 지정할 수 있습니다.
주요 옵션
ps: 기본적으로 현재 쉘에서 실행 중인 프로세스 표시ps -e: 시스템에서 실행 중인 모든 프로세스 표시ps -f: 프로세스를 포맷된 형태로 상세히 표시ps aux: 모든 사용자와 관련된 모든 프로세스 상세히 표시
사용 예제
# 현재 쉘에서 실행 중인 프로세스
ps
# 모든 프로세스 확인
ps -e
# 포맷된 출력 확인
ps -ef
# 특정 사용자(user)의 프로세스 확인
ps -u username
# 특정 프로세스를 이름으로 검색
ps aux | grep process_name2. 실시간 프로세스 관리 (top 명령어)
top 명령어는 실시간으로 시스템에서 실행 중인 프로세스와 자원 사용 상태를 모니터링하는 데 사용됩니다.
주요 기능
- CPU, 메모리, 스왑 사용량 실시간 모니터링
- 특정 프로세스에 우선순위 변경 또는 종료
- 키보드 단축키로 동작 제어
주요 단축키
q:top종료k: 프로세스 종료 (PID 입력 필요)r: 프로세스 우선순위 변경 (PID 입력 필요)h: 도움말 표시s: 업데이트 주기 변경
사용 예제
# top 실행
$ top
# h 키를 눌러 명령어 도움말 확인top 명령어는 시스템 자원 관리에 매우 유용하며, 특정 프로세스의 비정상적인 동작을 탐지할 때 특히 유용합니다.
3. 프로세스 종료 (kill 명령어)
kill 명령어는 특정 프로세스를 종료하거나 제어 신호를 보낼 때 사용됩니다. 종료하려는 프로세스의 PID를 알아야 하며, 이를 위해 ps 또는 top을 활용합니다.
주요 옵션
kill [PID]: 프로세스를 종료 (기본적으로SIGTERM신호)kill -9 [PID]: 강제 종료 (SIGKILL신호)kill -s [SIGNAL] [PID]: 특정 신호 전달
주요 신호
SIGTERM (15): 프로세스 종료 요청 (기본 신호)SIGKILL (9): 프로세스 강제 종료SIGHUP (1): 프로세스 재시작SIGSTOP (19): 프로세스 일시 중단SIGCONT (18): 일시 중단된 프로세스 재개
사용 예제
# PID가 1234인 프로세스 종료
kill 1234
# 강제로 종료 (SIGKILL)
kill -9 1234
# 프로세스 재시작
kill -1 1234
# 특정 이름의 프로세스를 종료하는 예제
ps aux | grep process_name | awk '{print $2}' | xargs kill4. Bash 스크립트 예제: 프로세스 관리
다음은 프로세스의 상태를 확인하고 종료하는 간단한 Bash 스크립트입니다.
스크립트 내용
#!/bin/bash
# 사용법 출력
if [ "$#" -lt 2 ]; then
echo "Usage: $0 <process_name> <signal>"
echo "Example: $0 my_process SIGKILL"
exit 1
fi
PROCESS_NAME=$1
SIGNAL=$2
# 프로세스 찾기
PID=$(ps aux | grep "$PROCESS_NAME" | grep -v grep | awk '{print $2}')
if [ -z "$PID" ]; then
echo "Process '$PROCESS_NAME' not found."
exit 1
fi
# 프로세스 종료
kill -s "$SIGNAL" "$PID"
if [ $? -eq 0 ]; then
echo "Process '$PROCESS_NAME' (PID: $PID) terminated with signal $SIGNAL."
else
echo "Failed to terminate process '$PROCESS_NAME'."
fi실행 방법
- 스크립트를 저장합니다 (예:
process_manager.sh). - 실행 권한을 부여합니다:
chmod +x process_manager.sh- 스크립트를 실행합니다:
./process_manager.sh <process_name> <signal>
예:
./process_manager.sh my_process SIGKILL5. 결론
이번 포스팅에서는 Linux에서 프로세스를 확인, 제어, 종료하는 데 유용한 명령어 ps, top, kill을 알아보았습니다. 또한 Bash 스크립트를 활용하여 프로세스를 관리하는 방법도 살펴보았습니다. 이를 활용하면 시스템 관리와 문제 해결이 더욱 효율적이고 체계적으로 이루어질 것입니다.
반응형
'Linux Bash shell script' 카테고리의 다른 글
| Bash Shell Script 파이프라인(Pipeline)을 활용한 명령어 조합 (0) | 2025.02.02 |
|---|---|
| Bash Shell Script 파일 입출력 (cat, tee, >) (0) | 2025.02.01 |
| Bash Shell Script 백그라운드 실행 (&, jobs, fg, bg) (0) | 2025.01.30 |
| Bash Shell Script 디렉토리 탐색 (find, xargs) (0) | 2025.01.29 |
| Bash Shell Script 파일 생성, 삭제, 복사 (touch, rm, cp, mv) (0) | 2025.01.29 |