Computer >> 컴퓨터 >  >> 프로그램 작성 >> BASH 프로그래밍

메모리가 부족할 때 이메일 경고를 보내는 쉘 스크립트

bash와 같은 Unix/Linux 셸 프로그램의 강력한 측면 , 결정을 내리고 명령을 반복적으로 실행하고 새 기능을 만드는 등의 작업을 수행할 수 있도록 하는 일반적인 프로그래밍 구성에 대한 놀라운 지원입니다. 쉘 스크립트라고 하는 파일에 명령을 작성하고 일괄적으로 실행할 수 있습니다.

이것은 시스템 관리의 안정적이고 효과적인 수단을 제공합니다. 매일 백업, 시스템 업데이트 등과 같은 작업을 자동화하는 스크립트를 작성할 수 있습니다. 새로운 사용자 지정 명령/유틸리티/도구 등을 만듭니다. 서버에서 진행 중인 상황을 파악하는 데 도움이 되는 스크립트를 작성할 수 있습니다.

서버의 중요한 구성 요소 중 하나는 메모리(RAM ), 시스템의 전반적인 성능에 큰 영향을 미칩니다.

이 기사에서는 서버 메모리가 부족할 경우 한 명 이상의 시스템 관리자에게 경고 이메일을 보내는 작지만 유용한 셸 스크립트를 공유합니다.

이 스크립트는 Linux VPS를 주시하는 데 특히 유용합니다. (가상 사설 서버 ) 적은 양의 메모리(약 1GB) (약 990MB ).

테스트 환경 설정

  1. CentOS/RHEL 7 mailx가 있는 프로덕션 서버 작동하는 postfix 메일 서버와 함께 설치된 유틸리티.

alertmemory.sh 스크립트 작동:먼저 여유 메모리 크기를 확인한 다음 여유 메모리 양이 지정된 크기(100 이 가이드의 목적에 따라 MB), 허용 가능한 최소 메모리 크기에 대한 벤치마크로 사용됩니다.

이 조건이 true이면 서버 RAM을 사용하는 상위 10개 프로세스 목록을 생성하고 지정된 이메일 주소로 경고 이메일을 보냅니다.

참고 :Linux 배포 요구 사항을 충족하려면 스크립트(특히 메일 발신자 유틸리티, 적절한 플래그 사용)를 약간 변경해야 합니다.

서버 메모리를 확인하는 셸 스크립트
#!/bin/bash 
#######################################################################################
#Script Name    :alertmemory.sh
#Description    :send alert mail when server memory is running low
#Args           :       
#Author         :Aaron Kili Kisinga
#Email          :[email protected]
#License       : GNU GPL-3	
#######################################################################################
## declare mail variables
##email subject 
subject="Server Memory Status Alert"
##sending mail as
from="[email protected]"
## sending mail to
to="[email protected]"
## send carbon copy to
also_to="[email protected]"

## get total free memory size in megabytes(MB) 
free=$(free -mt | grep Total | awk '{print $4}')

## check if free memory is less or equals to  100MB
if [[ "$free" -le 100  ]]; then
        ## get top processes consuming system memory and save to temporary file 
        ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head >/tmp/top_proccesses_consuming_memory.txt

        file=/tmp/top_proccesses_consuming_memory.txt
        ## send email if system memory is running low
        echo -e "Warning, server memory is running low!\n\nFree memory: $free MB" | mailx -a "$file" -s "$subject" -r "$from" -c "$to" "$also_to"
fi

exit 0

스크립트를 만든 후 /etc/scripts/alertmemory.sh , 실행 가능하게 만들고 cron.hourly에 심볼릭 링크합니다.

# chmod +x /etc/scripts/alertmemory.sh
# ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh

즉, 위의 스크립트는 서버가 실행되는 동안 1시간마다 실행됩니다.

도움말 :의도한 대로 작동하는지 테스트하고, 전자 메일을 쉽게 보낼 수 있도록 벤치 마크 값을 약간 높게 설정하고, 약 5분의 작은 간격을 지정할 수 있습니다.

그런 다음 스크립트에 제공된 무료 명령을 사용하여 명령줄에서 계속 확인하십시오. 작동하는지 확인한 후 사용하려는 실제 값을 정의하십시오.

아래는 샘플 알림 이메일을 보여주는 스크린샷입니다.

메모리가 부족할 때 이메일 경고를 보내는 쉘 스크립트

그게 다야! 이 기사에서는 서버 메모리(RAM)가 부족한 경우 쉘 스크립트를 사용하여 시스템 관리자에게 경고 이메일을 보내는 방법을 설명했습니다. 아래 피드백 양식을 통해 이 주제와 관련된 모든 생각을 공유할 수 있습니다.