목차
1. 소스 생성
• 스크립트 파일 내용은 아래에 다음과 같습니다.
• 간단하게 CPU, Memory, Disk 사용량을 로그 형태의 파일로 저장합니다.
• 10초 주기로 서버의 상태를 확인합니다.
#!/bin/sh
function cpuCheck() {
#CPU
cpu_usage=`top -b -n1 | grep -Po '[0-9.]+ id' | awk '{print 100-$1}'`
#CPU 소수점반올림
cpu_usage=$(printf %.0f $cpu_usage)
#string to int cast
((cpu_usage=${cpu_usage}*1))
if [ $cpu_usage -ge 90 ]
then
echo -n " [CPU($cpu_usage)% - 심각]" >> $today
elif [ $cpu_usage -ge 70 ]
then
echo -n " [CPU($cpu_usage)% - 주의]" >> $today
else
echo -n " [CPU($cpu_usage)% - 양호]" >> $today
fi
}
function memoryCheck() {
memory_total=`free | grep ^Mem | awk '{print $2}'`
memory_used=`free | grep ^Mem | awk '{print $3}'`
memory_percent=$((100*$memory_used/$memory_total))
if [ $memory_percent -ge 90 ]
then
echo -n " [Memory($memory_percent)% - 심각]" >> $today
elif [ $memory_percent -ge 70 ]
then
echo -n " [Memory($memory_percent)% - 주의]" >> $today
else
echo -n " [Memory($memory_percent)% - 양호]" >> $today
fi
}
function diskCheck() {
disk_total=`df -P | grep -v ^Filesystem | awk '{sum += $2} END { print sum; }'`
disk_used=`df -P | grep -v ^Filesystem | awk '{sum += $3} END { print sum; }'`
disk_percent=$((100*$disk_used/$disk_total))
if [ $disk_percent -ge 90 ]
then
echo -n " [Disk($disk_percent)% - 심각=]" >> $today
elif [ $disk_percent -ge 70 ]
then
echo -n " [Disk($disk_percent)% - 주의]" >> $today
else
echo -n " [Disk($disk_percent)% - 양호]" >> $today
fi
}
while true; do
today=$(date "+%Y-%m-%d").txt #날짜로 파일명 생성
today_format=$(date)- #로그를 위한 데이트 형태
echo -n $today_format >> $today
cpuCheck
memoryCheck
diskCheck
echo "" >> $today
echo "" >> $today
sleep 10 #10초 주기
done
[1. touch로 파일 생성]
# touch server_check.sh
[2. vi, vim 편집기를 이용하여 스크립트 파일 붙여넣기]
# vi server_check.sh
[3. 실행 가능한 권한 부여]
# chmod +x server_check.sh
2. 실행
• 스크립트를 백그라운드로 실행해줍니다.
[터미널이 종료 되면 같이 종료가 됨]
# sh server_check.sh &
[터미널이 종료 되어도 유지를 위한 실행]
# nohup sh server_check.sh &
[
nohup.out 파일을 생성하지 않으려면 다음과 같이 실행해 줍니다.
1>/dev/null : 표준 출력을 사용하지 않겠다
2>&1 : 표준 에러를 표준 출력과 같게 만듬
]
# nohup sh server_check.sh 1>/dev/null 2>&1 &
[실행을 성공한 경우 오늘 날짜로 파일이 생성 됩니다.]
# ls
2021-09-21.txt server_check.sh
[실시간 확인하기]
# tail -f 2021-09-21.txt
2021. 09. 21. (화) 18:35:03 KST- [CPU(16)% - 양호] [Memory(34)% - 양호] [Disk(9)% - 양호]
2021. 09. 21. (화) 18:35:13 KST- [CPU(9)% - 양호] [Memory(34)% - 양호] [Disk(9)% - 양호]
2021. 09. 21. (화) 18:35:23 KST- [CPU(5)% - 양호] [Memory(34)% - 양호] [Disk(9)% - 양호]
2021. 09. 21. (화) 18:35:34 KST- [CPU(6)% - 양호] [Memory(34)% - 양호] [Disk(9)% - 양호]
2021. 09. 21. (화) 18:35:44 KST- [CPU(11)% - 양호] [Memory(34)% - 양호] [Disk(9)% - 양호]
( ... ) 생략
3. 종료
• ps, kill 명령어를 이용해 종료해줍니다.
[PID를 찾아서 종료하기]
# ps -ef | grep server_check.sh | grep -v grep
root 3092 15023 0 18:34 pts/1 00:00:00 sh server_check.sh
# kill -9 3092
[실행 명령어를 찾아서 종료하기]
# kill -9 `ps -f | grep server_check.sh | grep -v grep | awk '{print $2}'`
[1]+ 죽었음 nohup sh server_check.sh > /dev/null 2>&1
'OS > Linux' 카테고리의 다른 글
[Linux] 리눅스 파일의 원하는 행과 열 출력 - awk (1) | 2021.09.25 |
---|---|
[Linux] 리눅스 프로세스 작업 전환 (Background, Foreground) (0) | 2021.09.22 |
[Linux] 리눅스 프로세스 상태 확인하기 - ps (0) | 2021.09.20 |
[Linux] 리눅스 원하는 파일 찾기 - find (0) | 2021.09.19 |
[Linux] 리눅스 파일에서 원하는 내용 찾기 - grep (0) | 2021.09.18 |