Weboldal keresés

Shell-szkript, amely e-mail értesítést küld, ha kevés a memória


A Unix/Linux shell-programok, például a bash egy erőteljes tulajdonsága, hogy elképesztő támogatást nyújtanak a közös programozási konstrukciókhoz, amelyek lehetővé teszik a döntések meghozatalát, a parancsok ismételt végrehajtását, az új funkciók létrehozását és még sok minden mást. Parancsokat írhat egy shell szkriptként ismert fájlba, és együttesen végrehajthatja azokat.

Ez megbízható és hatékony rendszeradminisztrációs eszközt kínál. Szkripteket írhat a feladatok automatizálására, például napi biztonsági mentések, rendszerfrissítések stb. új egyéni parancsok/segédprogramok/eszközök létrehozása és azon túl. Szkripteket írhat, amelyek segítenek lépést tartani a szerveren zajló eseményekkel.

A kiszolgáló egyik kritikus összetevője a memória (RAM), amely nagyban befolyásolja a rendszer általános teljesítményét.

Ebben a cikkben egy kicsi, de hasznos shell-szkriptet osztunk meg, amellyel figyelmeztető e-mailt küldhetünk egy vagy több rendszergazdának, ha a szervermemória fogy.

Ez a szkript különösen hasznos a Linux VPS (virtuális privát szerverek) szemmel tartásához, kis mennyiségű, például körülbelül 1 GB memóriával ( körülbelül 990 MB).

Tesztkörnyezet beállítás

  1. Egy CentOS/RHEL 7 éles szerver mailx segédprogrammal telepítve, működő postfix levelezőszerverrel.

Az alertmemory.sh szkript így működik: először ellenőrzi a szabad memória méretét, majd meghatározza, hogy a szabad memória kisebb vagy egyenlő-e egy megadott mérettel (100 MB jelen útmutató céljaira) a legkisebb elfogadható szabad memóriaméret viszonyítási alapjaként használják.

Ha ez a feltétel igaz, akkor létrehoz egy listát a 10 leggyakrabban kiszolgáló RAM-ot fogyasztó folyamatról, és figyelmeztető e-mailt küld a megadott e-mail címekre.

Megjegyzés: Néhány változtatást kell végrehajtania a szkripten (különösen a levélküldő segédprogramban, használja a megfelelő jelzőket), hogy megfeleljen a Linux disztribúciós követelményeinek.


#!/bin/bash 
#######################################################################################
#Script Name    :alertmemory.sh
#Description    :send alert mail when server memory is running low
#Args           :       
#Author         :Aaron Kili Kisinga
#Email          :[email 
#License       : GNU GPL-3	
#######################################################################################
## declare mail variables
##email subject 
subject="Server Memory Status Alert"
##sending mail as
from="[email "
## sending mail to
to="[email "
## send carbon copy to
also_to="[email "

## 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

A /etc/scripts/alertmemory.sh szkript létrehozása után tegye végrehajthatóvá, és jelölje be a cron.hourly fájlt.


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

Ez azt jelenti, hogy a fenti szkript 1 óránként lefut, amíg a szerver fut.

Tipp: Kipróbálhatja, hogy megfelelően működik-e, kicsit magasra állíthatja a referenciaértéket, hogy könnyen indítsa el az e-mail küldését, és megadhat egy kis időközt körülbelül 5 perc.

Ezután folytassa az ellenőrzést a parancssorból a szkriptben található ingyenes paranccsal. Miután megerősítette, hogy működik, határozza meg a tényleges értékeket, amelyeket használni szeretne.

Az alábbiakban egy képernyőképen látható egy minta figyelmeztető e-mail.

Ez minden! Ebben a cikkben elmagyaráztuk, hogyan lehet shell-szkripttel figyelmeztető e-maileket küldeni a rendszergazdáknak arra az esetre, ha a kiszolgálómemória (RAM) kifogy. A témával kapcsolatos gondolatait az alábbi visszajelzési űrlapon keresztül megoszthatja velünk.