Se sei stato un amministratore per un certo periodo di tempo, hai sicuramente scoperto situazioni in cui un server ha picchi nell'utilizzo della CPU o nell'utilizzo della memoria e / o nei livelli di carico. Anche correre "top" non ti darà sempre la risposta. Quindi come trovi quei processi subdoli che stanno divorando le risorse del tuo sistema per essere in grado di ucciderli?
Il seguente script potrebbe essere di aiuto. È stato scritto per un server web, quindi ha alcune parti che sono specificamente alla ricerca di processi httpd e alcune parti che si occupano di MySQL. A seconda della distribuzione del server, è sufficiente commentare / eliminare quelle sezioni e aggiungerne altre. Dovrebbe essere usato come punto di partenza.
I prerequisiti per questa versione dello script sono alcuni freeware rilasciati sotto GNU General Public License chiamato mytop (disponibile all'indirizzo
http://jeremy.zawodny.com/mysql/mytop/
) che è uno strumento fantastico per controllare le prestazioni di MySQL. Sta invecchiando, ma funziona ancora alla grande per i nostri scopi qui.
Inoltre, uso mutt come programma di posta - potresti voler cambiare lo script per usare semplicemente l'utilità `mail` incorporata di Linux. Lo eseguo tramite cron ogni ora; regolare come meglio credi. Oh, e questo script deve essere eseguito come root poiché legge da alcune aree protette del server.
Quindi iniziamo, va bene?
Innanzitutto, imposta le variabili di script:
#! / Bin / Bash
#
# Script per controllare i livelli medi di carico del sistema da provare a determinare
# quali processi lo stanno portando troppo in alto ...
#
# 07Jul2010 tjones
#
# imposta l'ambiente
dt = `data +% d% b% Y-% X`
# Ovviamente, cambia le seguenti directory in cui sono effettivamente conservati i tuoi file di log
tmpfile = "/ tmp / checkSystemLoad.tmp"
logfile = "/ tmp / checkSystemLoad.log"
msgLog = "/ var / log / messages"
mysql Log = "/ var / log / mysqld.log"
# il primo mailstop è l'email standard per i rapporti. Il secondo è per il cellulare (con un rapporto ridotto)
mailstop = "[email protected]"
mailstop1 = "[email protected]"
macchina = `hostname`
# I tre seguenti sono per mio uso top - usa un utente db che abbia diritti decenti
dbusr = "nome utente"
dbpw = "password"
db = "yourdatabasename"
# Quello che segue è il livello di carico da controllare: 10 è molto alto, quindi potresti volerlo abbassare.
levelToCheck = 10
Quindi, controlla il tuo livello di carico per vedere se lo script deve continuare:
# Imposta le variabili dal sistema:
loadLevel = `cat / proc / loadavg | awk '{print $1}' '
loadLevel = $ (printf "% 0.f" $ loadLevel)# se il livello di carico è maggiore di quello desiderato, avvia il processo di script. Altrimenti, esci da 0
se [ $loadLevel -gt $levelToCheck ]; poi
echo ""> $ tmpfile
echo "****************************************" >> $ tmpfile
echo "Data: $ dt" >> $ tmpfile
echo "Controlla il carico di sistema e i processi" >> $ tmpfile
echo "****************************************" >> $ tmpfile