Herhangi bir süredir yönetici iseniz, bir sunucunun CPU kullanımında veya bellek kullanımında ve / veya yük seviyelerinde ani artışlara neden olduğu durumları kesinlikle keşfettiniz. "Top" şeklinde koşmak da size her zaman cevabı vermez. Öyleyse onları öldürebilmek için sistem kaynaklarınızı çiğneyen bu sinsi süreçleri nasıl bulacaksınız?
Aşağıdaki komut dosyası yardımcı olabilir. Bir web sunucusu için yazılmıştır, dolayısıyla özellikle httpd süreçlerini arayan bazı kısımları ve MySQL ile ilgili bazı kısımları vardır. Sunucu dağıtımınıza bağlı olarak, bu bölümleri yorumlayın / silin ve diğerlerini ekleyin. Bir başlangıç noktası olarak kullanılmalıdır.
Komut dosyasının bu sürümü için önkoşullar, mytop adında GNU Genel Kamu Lisansı altında yayınlanan bazı ücretsiz yazılımlardır (
http://jeremy.zawodny.com/mysql/mytop/
) MySQL'in nasıl performans gösterdiğini kontrol etmek için harika bir araçtır. Eskiyor, ama yine de buradaki amaçlarımız için harika çalışıyor.
Ek olarak, postacı olarak mutt kullanıyorum - betiği sadece 'mail`de yerleşik linux kullanmak için değiştirmek isteyebilirsiniz. Her saat cron ile çalıştırıyorum; uygun gördüğünüz gibi ayarlayın. Oh - ve bu komut dosyasının, sunucunun bazı korumalı alanlarından okunduğu için root olarak çalışması gerekiyor.
Öyleyse başlayalım, olur mu?
Önce, komut dosyası değişkenlerinizi ayarlayın:
#!/bin/bash
#
# Sistem yükünün ortalama seviyelerini belirlemeye çalışacak
# hangi süreçler aşırıya kaçıyor ...
#
# 07Jul2010 tjones
#
# ortam ayarla
dt = `tarih +% d% b% Y-% X`
# Açıkçası, aşağıdaki dizinleri günlük dosyalarınızın gerçekte tutulduğu yerle değiştirin
tmpfile = "/ tmp / checkSystemLoad.tmp"
logfile = "/ tmp / checkSystemLoad.log"
msgLog="/var/log/messages"
mysqlLog="/var/log/mysqld.log"
# ilk posta durdurucu raporlar için standart e-postadır. İkincisi, cep telefonu için (ayrıştırılmış bir raporla)
mailstop = "[email protected]"
mailstop1 = "[email protected]"
machine = `hostname`
# Aşağıdaki üçü mytop kullanımı içindir - makul haklara sahip bir db kullanıcısı kullanın
dbusr = "kullanıcı adı"
dbpw = "şifre"
db = "veri tabanınızın adı"
# Aşağıdakiler kontrol edilecek yük seviyesidir - 10 gerçekten yüksek, bu yüzden onu düşürmek isteyebilirsiniz.
levelToCheck = 10
Ardından, komut dosyasının devam edip etmeyeceğini görmek için yükleme düzeyinizi kontrol edin:
# Değişkenleri sistemden ayarlayın:
loadLevel = `cat / proc / loadavg | awk '{print $1}'
loadLevel = $ (printf "% 0.f" $ loadLevel)# Yükleme düzeyi istediğinizden yüksekse, komut dosyası sürecini başlatın. Aksi takdirde, 0'dan çıkın
[ $loadLevel -gt $levelToCheck ] ise; sonra
echo ""> $ tmpfile
echo "**************************************" >> $ tmpfile
echo "Tarih: $ dt" >> $ tmpfile
echo "Sistem Yükünü ve İşlemleri Kontrol Edin" >> $ tmpfile
echo "**************************************" >> $ tmpfile