Skript lupine za pošiljanje e -poštnega opozorila, ko se pomnilnika zmanjka


Močan vidik programov lupine Unix/Linux, kot je bash, je njihova neverjetna podpora za skupne programske konstrukcije, ki vam omogočajo sprejemanje odločitev, ponavljajoče se izvajanje ukazov, ustvarjanje novih funkcij in še veliko več. Ukaze lahko zapišete v datoteko, imenovano lupinski skript, in jih skupaj izvajate.

To vam ponuja zanesljiv in učinkovit način upravljanja sistema. Lahko napišete skripte za avtomatizacijo opravil, na primer vsakodnevno varnostno kopiranje, posodobitve sistema itd. ustvarite nove ukaze/pripomočke/orodja po meri in naprej. Lahko napišete skripte, ki vam bodo pomagali slediti dogajanju na strežniku.

Ena izmed kritičnih komponent strežnika je pomnilnik (RAM), ki močno vpliva na splošno delovanje sistema.

V tem članku bomo delili majhen, a uporaben skript lupine za pošiljanje e -poštnega opozorila enemu ali več skrbnikom sistema, če je pomnilnika strežnika premalo.

Ta skript je še posebej uporaben za opazovanje Linux VPS (virtualnih zasebnih strežnikov) z majhno količino pomnilnika, recimo približno 1 GB (približno 990 MB).

  1. Proizvodni strežnik CentOS/RHEL 7 z nameščenim pripomočkom mailx z delujočim poštnim strežnikom postfix.

Tako deluje skript alertmemory.sh: najprej preveri velikost prostega pomnilnika, nato ugotovi, ali je količina prostega pomnilnika manjša ali enaka določeni velikosti (100 MB za namen tega priročnika), ki se uporablja kot merilo za najmanj sprejemljiva velikost prostega pomnilnika.

Če je ta pogoj resničen, bo ustvaril seznam 10 najboljših procesov, ki porabijo strežniški RAM, in poslal e -poštno opozorilo na določene e -poštne naslove.

Opomba: Če želite izpolniti svoje zahteve glede distribucije Linuxa, boste morali narediti nekaj sprememb v skriptu (zlasti pripomoček za pošiljatelja pošte, uporabite ustrezne zastavice).

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

Ko ustvarite svoj skript /etc/scripts/alertmemory.sh, ga naredite izvedljivega in ga povežite s cron.hourly.

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

To pomeni, da se bo zgornji skript zagnal po vsaki 1 uri, dokler strežnik deluje.

Namig: Lahko preizkusite, ali deluje, kot je predvideno, nastavite vrednost primerjalne oznake nekoliko visoko, da bo enostavno poslano pošiljanje e -pošte, in določite majhen interval približno 5 minut.

Nato še naprej preverjajte iz ukazne vrstice z brezplačnim ukazom v skriptu. Ko potrdite, da deluje, določite dejanske vrednosti, ki jih želite uporabiti.

Spodaj je posnetek zaslona, ki prikazuje vzorec e -poštnega sporočila z opozorilom.

To je vse! V tem članku smo razložili, kako z uporabo skripta lupine pošiljati opozorilna e -poštna sporočila sistemskim skrbnikom, če strežnika (RAM) primanjkuje. Vsa mnenja v zvezi s to temo lahko delite z nami preko spodnjega obrazca za povratne informacije.