Jika Anda telah menjadi admin untuk waktu yang lama, Anda pasti telah menemukan situasi di mana server melonjak dalam penggunaan CPU atau penggunaan memori dan / atau tingkat beban. Menjalankan `teratas` juga tidak selalu memberi Anda jawabannya. Jadi, bagaimana Anda menemukan proses licik yang mengunyah sumber daya sistem Anda untuk dapat membunuhnya?
Skrip berikut mungkin dapat membantu. Itu ditulis untuk server web, jadi memiliki beberapa bagian yang secara khusus mencari proses httpd dan beberapa bagian yang berhubungan dengan MySQL. Bergantung pada penerapan server Anda, cukup beri komentar / hapus bagian tersebut dan tambahkan yang lain. Ini harus digunakan sebagai titik awal.
Prasyarat untuk versi skrip ini adalah beberapa perangkat gratis yang dirilis di bawah Lisensi Publik Umum GNU yang disebut mytop (tersedia di
http://jeremy.zawodny.com/mysql/mytop/
) yang merupakan alat luar biasa untuk memeriksa bagaimana kinerja MySQL. Ini semakin tua, tetapi masih berfungsi dengan baik untuk tujuan kita di sini.
Selain itu, saya menggunakan mutt sebagai mailer - Anda mungkin ingin mengubah skrip agar hanya menggunakan utilitas `mail` bawaan linux. Saya menjalankannya melalui cron setiap jam; sesuaikan sesuai keinginan Anda. Oh - dan skrip ini perlu dijalankan sebagai root karena ia membaca dari beberapa area server yang dilindungi.
Jadi mari kita mulai, oke?
Pertama, setel variabel skrip Anda:
#! / Bin / Bash
#
# Script untuk memeriksa tingkat rata-rata beban sistem untuk mencoba menentukan
# proses apa yang membuatnya terlalu tinggi ...
#
# 07Jul2010 tjones
#
# mengatur lingkungan
dt = `tanggal +% d% b% Y-% X`
# Jelas, ubah direktori berikut ke tempat file log Anda sebenarnya disimpan
tmpfile = "/ tmp / checkSystemLoad.tmp"
logfile = "/ tmp / checkSystemLoad.log"
msgLog = "/ var / log / messages"
mysql Log = "/ var / log / mysqld.log"
# mailstop pertama adalah email standar untuk laporan. Yang kedua untuk ponsel (dengan laporan yang dikupas)
mailstop = "[email protected]"
mailstop1 = "[email protected]"
mesin = `nama host`
# Tiga berikut ini untuk penggunaan mytop - gunakan pengguna db yang memiliki hak yang layak
dbusr = "nama pengguna"
dbpw = "kata sandi"
db = "yourdatabasename"
# Berikut ini adalah tingkat beban yang harus diperiksa - 10 sangat tinggi, jadi Anda mungkin ingin menurunkannya.
levelToCheck = 10
Selanjutnya, periksa tingkat pemuatan Anda untuk melihat apakah skrip harus dilanjutkan:
# Atur variabel dari sistem:
loadLevel=`cat /proc/loadavg | awk '{print $1}'`
loadLevel = $ (printf "% 0.f" $ loadLevel)# jika tingkat pemuatan lebih besar dari yang Anda inginkan, mulailah proses skrip. Jika tidak, keluar 0
jika [ $loadLevel -gt $levelToCheck ]; kemudian
echo ""> $ tmpfile
echo "**************************************" >> $ tmpfile
echo "Tanggal: $ dt" >> $ tmpfile
echo "Periksa Pemuatan & Proses Sistem" >> $ tmpfile
echo "**************************************" >> $ tmpfile