Linux sunucularında sistem performansını izlemek, kaynak kullanımını takip etmek ve olası sorunları önceden tespit etmek için top komutu vazgeçilmez bir araçtır.
Linux sunucularında sistem performansını izlemek, kaynak kullanımını takip etmek ve olası sorunları önceden tespit etmek için top komutu vazgeçilmez bir araçtır. Bu komut, CPU, bellek ve işlemci yüklerini gerçek zamanlı olarak gösteren interaktif bir arayüz sunar. Ancak, bu verileri kalıcı olarak saklamak ve analiz etmek amacıyla top çıktısını log dosyasına kaydetmek kritik öneme sahiptir. Özellikle kurumsal ortamlarda, sunucu yöneticileri bu verileri raporlama, trend analizi veya sorun giderme süreçlerinde kullanır. Bu makalede, top çıktısını etkili bir şekilde log dosyasına kaydetme yöntemlerini adım adım ele alacağız. Pratik örnekler ve komutlarla, bu işlemi kolayca uygulayabileceksiniz.
top komutu, Linux sistemlerinde varsayılan olarak bulunur ve /proc dosya sisteminden veri çeker. Standart modda interaktif çalışır; q tuşu ile çıkış yapılır. Kaydetme amacıyla -b (batch) bayrağı eklenerek çıktı metin tabanlı hale getirilir. Örneğin, top -b -n 1 komutu tek bir anlık görüntüyü üretir; -n parametresi iterasyon sayısını belirler. Bu mod, çıktıyı pipe veya redirect ile dosyaya yönlendirmeye uygundur.
Sistem yöneticileri için top‘un shift+P ile CPU’ya göre sıralama veya shift+M ile belleğe göre sıralama gibi interaktif özellikleri faydalıdır. Loglama sırasında, -d (delay) ile yenileme aralığı ayarlanır; örneğin top -b -d 10 10 saniyede bir günceller. Bu ayarlar, log dosyasının boyutunu ve detay seviyesini kontrol eder. Kurumsal sunucularda, yüksek trafik dönemlerinde bu veriler darboğazları belirlemede kullanılır.
En temel yöntem, batch modunu kullanarak çıktıyı doğrudan dosyaya kaydetmektir. Komut şu şekildedir: top -b -n 5 > /var/log/top_output.log. Burada -n 5, 5 iterasyon yapar ve her seferinde ekran görüntüsü alır. Bu, kısa süreli snapshot’lar için idealdir. Dosya yazma izni için sudo gerekebilir; örneğin sudo top -b -n 10 > /var/log/top_snapshot.log. Sonuç dosyasını less veya tail -f ile inceleyin. Bu yöntem, hızlı testler için pratiktir ve disk alanı tasarrufu sağlar.
Uygulamada, cron job ile periyodik çalıştırın: crontab -e ile */30 * * * * top -b -n 3 >> /var/log/top_hourly.log ekleyin. Bu, her 30 dakikada bir append modunda (>>) günceller ve uzun vadeli trendleri yakalar.
tee komutu, çıktıyı hem ekrana hem dosyaya yazar. Komut: top -b | tee /var/log/top_live.log. Bu, interaktif izleme sırasında log tutmayı sağlar. Sürekli çalıştırmak için timeout 3600 top -b | tee top_1hour.log kullanın; 1 saat sonra durur. Kurumsal ortamda, birden fazla yönetici aynı anda izleyebilir.
Detaylı log için -p PID belirtin: top -b -p 1234 | tee process_top.log. Bu, belirli bir sürecin kaynak kullanımını izler ve hata ayıklama için değerlidir. Dosya büyümesini önlemek adına, split ile bölün: top -b | tee >(split -l 1000 - top_parts_).
Bash script ile döngü oluşturun. Örnek script: #!/bin/bash. Bu, dakikada bir append eder. Script’i nohup ile arka planda çalıştırın:
while true; do
top -b -n 1 >> /var/log/top_continuous.log
sleep 60
donenohup ./top_logger.sh &. PID kontrolü için ps aux | grep top_logger kullanın.
Gelişmiş versiyonda, tarih damgası ekleyin: echo "$(date): Top snapshot" >> log && top -b -n 1 >> log. Bu, analizde zaman bazlı filtreleme sağlar.
Log dosyalarının büyümesini yönetmek için logrotate yapılandırın. /etc/logrotate.d/top_log dosyasına ekleyin: /var/log/top*.log {. Bu, günlük döndürür ve 7 gün saklar. Sistem yeniden başlatmada devamlılık için systemd service oluşturun: /etc/systemd/system/top-logger.service ile tanımlayın ve systemctl enable top-logger.
daily
rotate 7
compress
missingok
}
Veri analizi için awk veya grep kullanın; örneğin grep "Cpu" top.log | awk '{print $2}' | sort -n CPU yüklerini sıralar. Bu teknikler, proaktif bakım sağlar ve sunucu uptime’ını artırır. Ayrıca, htop gibi alternatifler deneyin, ancak top‘un sadeliği standarttır.
Bu yöntemlerle, Linux sunucularınızda top verilerini sistematik olarak loglayarak performans optimizasyonu yapabilirsiniz. Düzenli uygulama, beklenmedik arızaları minimize eder ve ekip raporlamasını güçlendirir. Pratiğe dökerek kendi ortamınıza uyarlayın.