Konuyu Açan #1
watch ile Komut Çıktısı Takibi

Kullanıcılar sık sık arka planda çalışan süreçlerin çıktısını anlık olarak izlemek ister. Özellikle komut satırında bir işlemin ilerleyişini, log akışını veya belirli bir veri akışını sürekli olarak takip etmek, müdahale anlarını azaltır ve hata yakalamayı kolaylaştırır. Bu yazıda, watch aracını temel kullanımdan ileri düzey senaryolara kadar inceleyerek bu ihtiyacı karşılamayı hedefliyorum.


1) Watch nedir ve temel kullanımı
watch komutu, belirtilen komutun çıktısını belirli aralıklarla tekrarlayarak ekrana yazdırır. Temel kullanımı şu şekildedir:
KOD
1watch -n 2 'ps aux | grep myservice | grep -v grep'

Burada -n 2 her 2 saniyede bir çıktıyı yeniler. Amaç, süreç durumunu veya kaynak kullanımını canlı olarak görmek ve değişimlere hızlı reaksiyon vermektir. Ayrıca -d bayrağı ile karşılaştırmalı farkları vurgulayabilirsiniz:
KOD
1watch -d -n 1 'df -h /var'


2) Komut çıktısının filtrelenmesi ve odaklanma
Kapsamı daraltmak için çıktı üzerinde filtre ve renkli vurgular kullanmak faydalı olur. Örneğin bir log akışını gerçek zamanlı olarak izlemek:
KOD
1watch -n 1 "tail -n 50 /var/log/myapp.log | tail -f"

Ancak tail -f zaten sürekli akışı verir; watch ile kullanmak pratik değildir. Bunun yerine belirli bir kelimeyi aramak için grep ile birlikte:
KOD
1watch -n 2 "grep -n 'ERROR' /var/log/myapp.log | tail -n 5"

Bu yaklaşım, kritik hataları hızlıca yakalamaya yardımcı olur.

3) Kaynak kullanımı ve performans izleme
Bir servis veya container için CPU, bellek ve IO yoğunluğunu izlemek sık kullanılan scenaryolardır:
KOD
1watch -n 5 "ps -eo pid,ppid,comm,%cpu,%mem --sort=-%cpu | head -n 10"

Bellek sızıntısı veya aşırı CPU kullanımında anlık değişimleri görmek için -r (renkli) seçeneği kullanılabilir:
KOD
1watch -n 3 -r "free -h"


4) Uzaktan izleme ve güvenlik notları
Kaynaklar uzak bir sunucuda çalışıyorsa SSH tünelleriyle güvenli bir şekilde izlemek mümkün. Örneğin:
[code]ssh user@host 'watch -n 2 "journalctl -u myservice -f"'
İzleme oturumlarını yazıya dökmek için script ve tee kullanmak pratik olur:
KOD
1watch -n 2 'journalctl -u myservice -f | tee -a /var/log/watch_myservice.log'

Güvenlik açısından, sadece yetkili kullanıcıların izlemesi ve çıktılarda gizli bilgilerin ifşa olmaması için dikkat etmek gerekir.

5) Sınırlar ve alternatifler
watch her ne kadar güçlü bir araç olsa da uzun süreli, yüksek frekanslı izlemelerde terminal kaydı büyüyebilir ve performans kaygılarına yol açabilir. Bu durumda grafana veya Prometheus gibi izleme çözümleriyle zaman serisi verisini toplamak ve görselleştirmek daha sürdürülebilir olabilir. Ayrıca interaktif izleme için tmux veya screen ile bölünmüş oturumlar kurup farklı pencerelerde ayrı komutlar çalıştırmak da verimlidir.

Sonuç ve uygulanabilirlik
watch, hızlı diagnostic ihtiyacı olan günlük operasyonlarda basit ve etkili bir çözümdür. Gerçek zamanlı çıktı izleme, hızlı hata tespiti ve uyarı akışlarını test etmek için uygun bir başlangıç seviyesi sağlar. Özellikle log akışında belirli kalıpları takip etmek ve kaynak kullanımını anlık olarak görmek için pratik ve hızlı bir yol sunar.

[/quote]

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi