리눅스 리소스 절약을 위한 스크립트 작성
리눅스 운영 체제는 자원 관리와 성능 향상을 위한 다양한 도구와 기능을 제공합니다. 그러나 시스템 자원을 효율적으로 사용하고 절약하기 위해서는 스크립트를 작성하여 자동화하는 것이 필요합니다. 이번 글에서는 리눅스 리소스 절약을 위한 스크립트 작성에 대해 알아보겠습니다.
1. 메모리 관리 스크립트
스크립트 목적
리눅스 시스템에서 메모리를 최적으로 사용하는 스크립트를 작성합니다.
스크립트 예제
#!/bin/bash
# 현재 사용 중인 메모리 양 확인
used_memory=$(free -m | awk 'NR==2{print $3}')
# 사용 중인 메모리 양과 임계값 비교
if [ "$used_memory" -gt 5000 ]; then
# 메모리 양이 임계값을 초과하면 사용 중인 프로세스 중 메모리를 많이 사용하는 프로세스 확인
high_memory_processes=$(ps -eo pid,%mem --sort=-%mem | head -n 10 | awk 'NR>1{print $1}')
# 많은 메모리를 사용하는 프로세스 종료
for process_id in $high_memory_processes; do
echo "Killing process $process_id"
kill -9 $process_id
done
fi
스크립트 설명
free -m
명령어를 사용하여 현재 시스템에서 사용되고 있는 메모리 양을 확인합니다.awk
명령어를 사용하여 사용 중인 메모리의 값을 추출합니다.- 추출한 사용 중인 메모리 양을 임계값과 비교합니다. 이 예제에서는 5000MB가 임계값으로 설정되어 있습니다.
- 임계값을 초과하는 경우,
ps
명령어를 사용하여 메모리를 많이 사용하는 상위 10개의 프로세스를 확인합니다.awk
명령어를 사용하여 프로세스 ID를 추출합니다. - 메모리를 많이 사용하는 프로세스의 ID를 사용하여 해당 프로세스를 강제로 종료합니다.
2. CPU 관리 스크립트
스크립트 목적
리눅스 시스템에서 CPU 자원을 효율적으로 사용하는 스크립트를 작성합니다.
스크립트 예제
#!/bin/bash
# CPU 사용량 확인
current_cpu_usage=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2}' | awk -F "%" '{print $1}')
# CPU 사용량이 일정 임계값보다 높을 경우 스크립트 실행
if [ "$(echo $current_cpu_usage '>=' 90 | bc -l)" -eq 1 ]; then
# CPU를 많이 사용하는 프로세스 확인
high_cpu_processes=$(ps -eo pid,%cpu --sort=-%cpu | head -n 10 | awk 'NR>1{print $1}')
# CPU를 많이 사용하는 프로세스를 우선적으로 스케줄링하도록 설정
for process_id in $high_cpu_processes; do
chrt -p -r 1 $process_id
echo "Setting real-time priority for process $process_id"
done
fi
스크립트 설명
top
명령어를 사용하여 현재 CPU 사용량을 확인합니다.grep
및awk
명령어를 사용하여 사용 중인 CPU 사용량의 값을 추출합니다.- 추출한 현재 CPU 사용량을 임계값과 비교합니다. 이 예제에서는 90%가 임계값으로 설정되어 있습니다.
- 임계값을 초과하는 경우,
ps
명령어를 사용하여 CPU를 많이 사용하는 상위 10개의 프로세스를 확인합니다.awk
명령어를 사용하여 프로세스 ID를 추출합니다. - CPU를 많이 사용하는 프로세스의 ID를 사용하여 해당 프로세스의 우선순위를 실시간 우선순위로 설정합니다.
위의 예제 코드는 메모리와 CPU 관리를 위한 두 가지 기본적인 스크립트입니다. 이외에도 파일 시스템 관리, 네트워크 관리 등 다양한 스크립트를 작성하여 리눅스 시스템의 자원을 효율적으로 관리할 수 있습니다. 리눅스 스크립트를 사용하여 시스템의 리소스를 절약하고 성능을 향상시킬 수 있습니다.