Ha bármilyen ideig rendszergazda voltál, akkor biztosan felfedeztél olyan helyzeteket, amikor a szerver megemelkedik a CPU használatában, a memória kihasználtságában és / vagy a terhelésben. A "top" futása sem mindig adja meg a választ. Tehát hogyan találja meg azokat az alattomos folyamatokat, amelyek rágják a rendszer erőforrásait, hogy képesek legyenek megölni őket?
A következő szkript segíthet. Webkiszolgáló számára íródott, így vannak olyan részei, amelyek kifejezetten a httpd folyamatokat keresik, és vannak olyan részek, amelyek a MySQL-kel foglalkoznak. A kiszolgáló telepítésétől függően egyszerűen megjegyezze / törölje ezeket a szakaszokat, és adjon hozzá másokat. Kiindulópontként kell használni.
A szkript ezen verziójának előfeltétele néhány ingyenes szoftver, amelyet a GNU General Public License licenc alatt adtak ki, mytop néven (elérhető
http://jeremy.zawodny.com/mysql/mytop/
), amely egy fantasztikus eszköz a MySQL teljesítményének ellenőrzésére. Öregszik, de még mindig kiválóan működik itteni céljainkhoz.
Ezenkívül a mutt-ot használom levelezőként - érdemes megváltoztatnia a szkriptet, hogy egyszerűen használja a `mail` beépített linuxot. Óránként futom cronon keresztül; igazodjon, ahogy jónak látja. Ja - és ennek a parancsfájlnak rootként kell futnia, mivel a kiszolgáló egyes védett területeiről olvas.
Tehát kezdjük, ugye?
Először állítsa be a szkript változóit:
#! / Bin / Bash
#
# Szkript a rendszer terhelésének átlagos szintjének ellenőrzéséhez, hogy megpróbálja meghatározni
# milyen folyamatok viszik túl magasra ...
#
# 07Jul2010 tjones
#
# beállított környezet
dt = "dátum +% d% b% Y-% X"
# Nyilvánvaló, hogy a következő könyvtárakat változtassa meg a naplófájlok tényleges tárolási helyével
tmpfile = "/ tmp / checkSystemLoad.tmp"
logfile = "/ tmp / checkSystemLoad.log"
msgLog = "/ var / log / messages"
mysql Log = "/ var / log / mysqld.log"
# az első mailstop a jelentések standard e-mailje. A második a mobiltelefonra vonatkozik (lehúzott jelentéssel)
mailstop = "[email protected]"
mailstop1 = "[email protected]"
gép = `hosztnév`
# A következő három mytop használatra szolgál - használjon egy db felhasználót, aki tisztességes jogokkal rendelkezik
dbusr = "felhasználónév"
dbpw = "jelszó"
db="yourdatabasename"
# A következő a terhelés szintje, amelyet ellenőrizni kell - a 10 nagyon magas, ezért érdemes csökkenteni.
levelToCheck = 10
Ezután ellenőrizze a betöltési szintet, hogy a szkript folytatódjon-e:
# Változók beállítása a rendszerből:
loadLevel = `macska / proc / loadavg | awk '{print $1} "
loadLevel = $ (printf "% 0.f" $ loadLevel)# ha a terhelési szint nagyobb, mint szeretné, indítsa el a szkript folyamatát. Ellenkező esetben lépjen ki a 0-ból
ha [ $loadLevel -gt $levelToCheck ]; azután
echo ""> $ tmpfile
visszhang "***************************************" "$ tmpfile
echo "Dátum: $ dt" >> $ tmpfile
echo "Ellenőrizze a rendszer betöltését és folyamatait" >> $ tmpfile
visszhang "***************************************" "$ tmpfile