htop Kurulumu ve Gelişmiş Süreç Yönetimi

Sunucunuzda neler döndüğünü anlamak için top komutunu açıp ekrana bakıyorsunuz, ama sayılar birbirine giriyor, hangi sürece odaklanacağınızı bilemiyorsunuz. İşte tam bu noktada htop devreye giriyor. htop, klasik top komutunun renkli, interaktif ve çok daha kullanıcı dostu versiyonu olarak düşünebilirsiniz. Hem yeni başlayan sistem yöneticileri hem de yıllardır sunucu yöneten deneyimliler için vazgeçilmez bir araç haline geldi. Bu yazıda htop‘u kurmaktan başlayıp, gelişmiş kullanım senaryolarına kadar her şeyi ele alacağız.

htop Nedir ve Neden Kullanmalısınız?

htop, Peter Hagervall tarafından geliştirilen ve Linux sistemlerinde süreç izleme amacıyla kullanılan interaktif bir terminal aracıdır. top‘a göre öne çıkan en büyük farkı, fare desteği sunması, renkli arayüzü ve süreçleri öldürmek veya yeniden önceliklendirmek için komut ezberlemenize gerek kalmamasıdır.

Günlük sysadmin hayatında htop‘un işinize yarayacağı birkaç senaryo:

  • Bir uygulama sunucusu yavaşladı ve hangi sürecin CPU’yu yuttuğunu bulmak istiyorsunuz
  • Bellek sızıntısı şüphesi olan bir servisi takip ediyorsunuz
  • Gecenin üçünde bir uyarı geldi, hızlıca sisteme bakmanız gerekiyor
  • Geliştirme ortamında kendi uygulamanızın kaynak tüketimini izlemek istiyorsunuz

Bu senaryoların hepsinde htop size net, hızlı ve anlaşılır bir görünüm sunar.

Kurulum

Debian/Ubuntu ve Türevleri

sudo apt update && sudo apt install htop -y

RHEL/CentOS/AlmaLinux/Rocky Linux

CentOS 7 ve öncesinde htop EPEL reposundan gelir:

sudo yum install epel-release -y
sudo yum install htop -y

RHEL 8/9 ve türevlerinde dnf ile:

sudo dnf install epel-release -y
sudo dnf install htop -y

Arch Linux

sudo pacman -S htop

Kaynak Koddan Derleme (İleri Düzey)

Bazen sunucuda paket yöneticisi aracılığıyla güncel sürümü bulamazsınız ya da özel derleme seçeneklerine ihtiyaç duyarsınız:

sudo apt install build-essential libncursesw5-dev autoconf automake -y
wget https://github.com/htop-dev/htop/releases/download/3.3.0/htop-3.3.0.tar.xz
tar xf htop-3.3.0.tar.xz
cd htop-3.3.0
./autogen.sh
./configure
make
sudo make install

Kurulum tamamlandıktan sonra basitçe terminale htop yazarak başlatabilirsiniz.

Arayüzü Tanıyalım

htop‘u ilk açtığınızda birkaç farklı bölümle karşılaşırsınız. Üst kısımda CPU, bellek ve swap kullanım çubukları bulunur. Ortada süreç listesi yer alır, alt kısımda ise F tuşlarına atanmış işlevler gösterilir.

Üst Panel: CPU ve Bellek Bilgileri

Çok çekirdekli bir sistemde her çekirdek için ayrı bir çubuk görürsünüz. Bu çubuklar renk kodludur:

  • Yeşil: Normal kullanıcı süreçlerinin tüketimi
  • Kırmızı: Kernel süreçlerinin tüketimi
  • Mavi: Düşük öncelikli (nice) süreçler
  • Sarı: IRQ işlemleri

Bellek çubuğunda da benzer bir ayrım vardır. Yeşil kısım kullanılan RAM’i, mavi kısım buffer/cache alanını gösterir. Buffer/cache, Linux’un akıllıca kullandığı geçici alan olduğu için bu alanın dolu görünmesi sorun değildir.

Süreç Listesi Sütunları

Varsayılan görünümde şu sütunlar bulunur:

  • PID: Sürecin benzersiz kimlik numarası
  • USER: Süreci başlatan kullanıcı
  • PRI: Kernel öncelik değeri
  • NI: Nice değeri (-20 ile 19 arasında)
  • VIRT: Sanal bellek kullanımı
  • RES: Gerçek fiziksel RAM kullanımı
  • SHR: Paylaşılan bellek miktarı
  • S: Süreç durumu (Running, Sleeping, Zombie vb.)
  • CPU%: CPU kullanım yüzdesi
  • MEM%: Bellek kullanım yüzdesi
  • TIME+: Toplam CPU zamanı
  • Command: Sürecin komutu

Klavye Kısayolları ve Temel Kullanım

htop‘u verimli kullanmak için birkaç kısayolu ezberlemek yeterli. Fare desteği olsa da klavyeyle çok daha hızlı ilerlersiniz.

Navigasyon

  • Ok tuşları: Süreçler arasında gezinme
  • Page Up/Down: Hızlı yukarı/aşağı gitme
  • Home/End: Listenin başına/sonuna gitme
  • Space: Süreci işaretleme (toplu işlemler için)

Filtreleme ve Arama

Çok sayıda süreç çalışırken belirli bir süreci bulmak için:

# htop içinde F3 veya / tuşuna basarak arama başlatabilirsiniz
# Örneğin "nginx" yazarsanız nginx süreçleri filtrelenir

Komut satırından doğrudan belirli bir kullanıcının süreçlerini görmek için:

htop -u www-data

Bu komut özellikle web sunucusu süreçlerini izlerken çok işe yarar. www-data kullanıcısıyla çalışan Apache veya Nginx süreçlerini anında görürsünüz.

Süreç Yönetimi

  • F9 veya k: Seçili sürece sinyal gönder (kill)
  • F7: Nice değerini azalt (önceliği artır)
  • F8: Nice değerini artır (önceliği düşür)
  • F5: Ağaç görünümüne geç

Gelişmiş Kullanım Senaryoları

Senaryo 1: Bellek Sızıntısı Tespiti

Bir Java uygulaması çalıştırdığınızı ve zamanla bellek kullanımının arttığını fark ettiğinizi düşünün. Bu durumda htop‘u belleğe göre sıralayıp süreci takip edebilirsiniz.

# Belirli bir süreci PID ile filtreleyerek başlatma
htop -p 1234,5678

htop içinde F6 tuşuna basarak sütun seçimi yapın ve MEM% sütununa göre azalan sıralama seçin. Böylece en fazla bellek kullanan süreçler en üstte görünür. Süreci bulduğunuzda üzerine gelin ve her birkaç dakikada bir RES değerinin artıp artmadığını gözlemleyin.

Senaryo 2: CPU Spike Analizi

Bir e-ticaret sitesinin yoğun saatlerinde sunucu yavaşlıyor. htop‘u açtığınızda hangi süreçlerin anlık olarak CPU’yu kullandığını görmek istiyorsunuz:

# htop'u doğrudan CPU sıralamasıyla başlatmak için
# açtıktan sonra F6 ile CPU% seçeneğini işaretleyin
htop -d 5

-d 5 parametresi, güncelleme aralığını 5 saniye yapar (varsayılan 1.5 saniyedir). Yoğun sistemlerde bu parametre htop‘un kendisinin kaynak tüketimini azaltır.

Senaryo 3: Belirli Süreç Grubunu İzleme

Bir mikroservis mimarisinde birden fazla servis çalışıyor ve sadece belirli servisleri izlemek istiyorsunuz:

# Birden fazla PID ile başlatma
htop -p $(pgrep -d',' -f "myapp")

Bu komut myapp adını içeren tüm süreçlerin PID’lerini bulur ve onları virgülle birleştirerek htop‘a parametre olarak geçer. Çok temiz bir çözüm.

Senaryo 4: Ağaç Görünümü ile Süreç Hiyerarşisi

Bir sürecin hangi alt süreçleri oluşturduğunu görmek için ağaç görünümü çok değerlidir. Özellikle Apache’nin worker süreçlerini veya bir uygulamanın fork ettiği işlemleri takip ederken:

htop -t

-t parametresi htop’u doğrudan ağaç görünümünde başlatır. Aynı şeyi htop içindeyken F5 tuşuyla da yapabilirsiniz. Ana süreçten dal gibi uzanan alt süreçleri görmek, hangi işlemin hangi çocuk süreci oluşturduğunu anlamak için idealdir.

Konfigürasyon Dosyası ile Özelleştirme

htop, ayarlarını ~/.config/htop/htoprc dosyasında saklar. Bu dosyayı elle düzenlemek yerine htop içindeki F2 tuşuyla açılan ayar menüsünü kullanmak daha güvenlidir. Ancak dosyayı anlamak, özellikle birden fazla sunucuda aynı konfigürasyonu uygulamak istediğinizde işinize yarar.

# Konfigürasyon dosyasını görüntüleme
cat ~/.config/htop/htoprc

Tipik bir htoprc dosyası şöyle görünür:

# Örnek htoprc içeriği
fields=0 48 17 18 38 39 40 2 46 47 49 1
sort_key=46
sort_direction=-1
tree_view=0
highlight_base_name=1
highlight_megabytes=1
highlight_threads=1
header_margin=1

Bu dosyayı sunucular arasında kopyalayarak tutarlı bir htop deneyimi sağlayabilirsiniz. Özellikle birden fazla sunucu yönetiyorsanız, konfigürasyon yönetim araçlarınıza (Ansible, Chef, Puppet) bu dosyayı da dahil etmek mantıklıdır.

htop Parametrelerinin Tam Listesi

htop‘u komut satırından başlatırken kullanabileceğiniz parametreler:

  • -d DELAY: Güncelleme aralığını ayarlar (10’luk birimde, yani -d 10 = 1 saniye)
  • -u USER: Sadece belirli kullanıcının süreçlerini göster
  • -p PID[,PID]: Sadece belirtilen PID’leri göster
  • -t: Ağaç görünümünde başlat
  • -s COLUMN: Belirtilen sütuna göre sırala
  • -C: Renkli görünümü kapat (renksiz terminal için)
  • –no-mouse: Fare desteğini devre dışı bırak
  • –readonly: Salt okunur mod (sinyal gönderme ve nice değiştirme devre dışı)
  • -H: Kullanıcı thread’lerini gizle

Sinyal Gönderme ve Süreç Yönetimi

htop‘un en çok kullanılan özelliklerinden biri, süreçlere sinyal göndermektir. F9 tuşuna bastığınızda bir sinyal listesi açılır:

Sık kullanılan sinyaller:

  • SIGTERM (15): Süreci nazikçe sonlandır, temizlik yapmasına izin ver
  • SIGKILL (9): Süreci anında öldür, temizlik yapamaz
  • SIGHUP (1): Süreci yeniden yükle (daemon’lar için)
  • SIGSTOP (19): Süreci geçici olarak durdur
  • SIGCONT (18): Durdurulmuş süreci devam ettir

Gerçek dünya senaryosu: Bir web uygulamanız yanıt vermiyor ve nginx’in worker process’i takılı kalmış. Önce SIGTERM gönderin, eğer sonuçlanmazsa SIGKILL kullanın. htop içinde süreci seçip F9 ile bu işlemi fare tıklamalarıyla bile yapabilirsiniz.

# Komut satırından toplu sinyal gönderme örneği
# Tüm zombie süreçleri bulmak ve parent PID'lerini listelemek
ps aux | awk '{ if ($8=="Z") print $2}'

Toplu İşlemler: Space ile Süreç İşaretleme

Birden fazla süreci aynı anda yönetmek istediğinizde Space tuşu devreye girer. Bir süreci işaretlediğinizde solunda sarı bir işaret belirir. Birden fazla süreci işaretledikten sonra F9 ile hepsine aynı sinyali gönderebilirsiniz.

Örnek senaryo: Aynı uygulamanın birden fazla instance’ı çalışıyor ve hepsini yeniden başlatmanız gerekiyor. htop‘ta uygulamanın adını arayın, her instance’ı Space ile işaretleyin ve SIGTERM gönderin.

htop ile Sistem Performans Analizi

Load Average Yorumlama

htop‘un sağ üst köşesinde load average değerlerini görürsünüz. Bu değerler son 1, 5 ve 15 dakikanın ortalamasını gösterir.

# Load average'ı komut satırından da görebilirsiniz
uptime
cat /proc/loadavg

Load average değerini yorumlarken CPU çekirdeği sayısını göz önünde bulundurmalısınız. 4 çekirdekli bir sistemde load average 4.0 ise sistem tam kapasitede çalışıyor demektir. Bu değer çekirdek sayısını sürekli aşıyorsa dikkat etmeniz gerekir.

Swap Kullanımını Takip Etme

htop‘ta swap çubuğunun dolmaya başlaması genellikle kötü haberin habercisidir. Swap kullanımı yoğunlaştığında sistemin yavaşladığını fark edersiniz çünkü disk I/O, RAM’e kıyasla çok yavaştır.

# Hangi süreçlerin swap kullandığını görmek
for file in /proc/*/status; do
  pid=$(echo $file | grep -o '[0-9]*')
  name=$(grep -h VmSwap $file 2>/dev/null | awk '{print $2}')
  if [ ! -z "$name" ] && [ "$name" != "0" ]; then
    echo "$pid $(cat /proc/$pid/cmdline 2>/dev/null | tr '' ' '): ${name} kB"
  fi
done | sort -k2 -rn | head -20

Bu script, en fazla swap kullanan 20 süreci listeler. htop ile görsel olarak takip ettiğiniz şeyi komut satırından da doğrulayabilirsiniz.

htoprc Konfigürasyonunu Sunucular Arası Senkronize Etme

Birden fazla sunucu yönetiyorsanız htop konfigürasyonunuzu tutarlı tutmak önemlidir:

# htoprc'yi diğer sunucuya kopyalama
scp ~/.config/htop/htoprc user@sunucu2:/home/user/.config/htop/htoprc

# Ansible ile toplu dağıtım için playbook örneği
# ansible-playbook -i inventory deploy_htoprc.yml

Ansible playbook örneği:

# deploy_htoprc.yml içeriği
# - name: htop konfigürasyonunu dağıt
#   hosts: all
#   tasks:
#     - name: .config/htop dizinini oluştur
#       file:
#         path: "{{ ansible_env.HOME }}/.config/htop"
#         state: directory
#     - name: htoprc dosyasını kopyala
#       copy:
#         src: files/htoprc
#         dest: "{{ ansible_env.HOME }}/.config/htop/htoprc"

htop Alternatifi: btop ve glances

htop mükemmel olsa da bazı durumlarda alternatiflerine de bakmanızda fayda var:

btop: htop‘tan daha modern bir arayüze sahip, grafikler daha detaylı ve ağ/disk I/O bilgilerini de gösteriyor.

glances: Python tabanlı, web arayüzü de sunan ve API üzerinden veri alınabilen kapsamlı bir izleme aracı.

Ancak günlük kullanımda htop‘un basitliği ve hafifliği genellikle bu alternatiflere tercih edilmesini sağlar. Özellikle düşük kaynaklı sistemlerde ya da hızlıca bir şeye bakmanız gereken anlarda htop kazanır.

Gerçek Dünya İpuçları

Yıllar içinde htop kullanırken öğrendiğim birkaç pratik ipucu:

Renk körü ekran sorunu: Bazı SSH bağlantılarında renkler bozuk görünebilir. Bu durumda -C parametresiyle renksiz modu deneyin.

Yüksek I/O bekleyen süreçler: CPU kullanımı düşük ama sistem yavaş mı? Süreç durumu sütununda D (uninterruptible sleep) gören süreçlere dikkat edin. Bu genellikle disk I/O beklediğini gösterir.

Zombie süreçler: Z durumundaki süreçler zombie’dir. Bunlar genellikle zararsızdır ama çok sayıda birikirsе parent süreci incelemeniz gerekir.

Thread’leri göster/gizle: htop içinde H tuşuyla thread görünümünü açıp kapatabilirsiniz. Thread yoğun uygulamalarda (Java, Node.js) thread’leri gizlemek süreci bulmayı kolaylaştırır.

# Zombie süreç kontrolü için hızlı komut
ps aux | grep -w Z

Sonuç

htop, her Linux sistem yöneticisinin araç kutusunda bulunması gereken temel araçlardan biri. Kurulumu dakikalar alıyor, öğrenme eğrisi düşük ve sağladığı bilgi miktarı yüksek. Günlük monitoring görevlerinden kriz anlarındaki hızlı analize kadar her durumda işinize yarıyor.

Başlangıç için şu adımları izleyin: Önce sisteminize kurun ve birkaç gün boyunca sadece izlemek amacıyla açık bırakın. Normal çalışma koşullarındaki CPU ve bellek değerlerini kafanıza yerleştirin. Bir sorun çıktığında normalden neyin farklı olduğunu hemen fark edeceksiniz. Klavye kısayollarını zamanla öğrenin, süreç filtreleme ve ağaç görünümüyle tanışın. Sonra konfigürasyon dosyasını özelleştirip sunucularınıza dağıtın.

Sistemlerinizi tanımak, sorunları erken fark etmenin en iyi yolu. htop bu tanışıklığı çok daha kolay hale getiriyor.

Yorum yapın