Merhaba arkadaşlar, bugün sizlere Linux sunucularımızın kalbi diyebileceğimiz süreç yönetiminden bahsedeceğim. Özellikle yeni başlayan sistem yöneticileri, sunucuda bir sorun olduğunda veya performans düştüğünde nereden başlayacaklarını bilemeyebiliyor. Bu rehberde, ps, top ve kill komutlarını kullanarak süreçleri nasıl izleyeceğinizi, analiz edeceğinizi ve gerektiğinde nasıl müdahale edeceğinizi adım adım anlatacağım. Bu bilgiler, sunucunuzdaki kaynak canavarlarını bulmanızı ve sisteminizi daha sağlıklı yönetmenizi sağlayacak.
Süreç Nedir ve Neden Önemlidir?
Linux'ta çalışan her program bir süreçtir. Her süreç, işlemci (CPU), bellek (RAM) ve giriş/çıkış (I/O) gibi sistem kaynaklarını tüketir. Sunucunuz yavaşladığında veya cevap vermemeye başladığında, genellikle arka planda kontrolsüzce kaynak tüketen bir süreç vardır. İşte bu noktada süreç yönetimi devreye giriyor.
ps Komutu: Süreçleri Anlık Görüntüleme
ps komutu, o an çalışan süreçlerin anlık bir görüntüsünü (snapshot) verir. En temel kullanımı ps aux şeklindedir. Bu komut, tüm kullanıcılara ait tüm süreçleri detaylı bir şekilde listeler.
Çıktıdaki önemli sütunlara bakalım:
USER: Süreci çalıştıran kullanıcı.
%CPU: Sürecin işlemci kullanım yüzdesi.
%MEM: Sürecin bellek kullanım yüzdesi.
COMMAND: Çalıştırılan komut.
Örneğin, CPU kullanımına göre sıralamak için ps aux çıktısını sort komutu ile birlikte kullanabiliriz. Benim sık kullandığım yöntem şudur:
Bu komut, CPU'yu en çok tüketen ilk 10 süreci gösterir. Bellek için --sort=-%mem kullanabilirsiniz.
top/htop Komutu: Canlı Performans İzleme
ps anlık görüntü verirken, top komutu sistem kaynaklarını ve süreçleri canlı olarak izlemenizi sağlar. Komutu çalıştırdığınızda interaktif bir ekran açılır.
top ekranının üst kısmında sistem geneli CPU, bellek, swap kullanım bilgileri, alt kısmında ise süreç listesi bulunur. Varsayılan olarak CPU kullanımına göre sıralanır.
top içindeyken bazı kullanışlı tuşlar:
M: Süreçleri bellek (RES) kullanımına göre sıralar.
P: CPU kullanımına göre sıralar (varsayılan).
k: Bir süreci sonlandırmak (kill) için PID (Süreç ID) girmenizi ister.
q: Çıkmak için.
Eğer daha renkli ve kullanışlı bir arayüz istiyorsanız, htop kurmanızı şiddetle tavsiye ederim. Kurulumu ve kullanımı çok daha kolaydır.
kill Komutu: Süreçleri Sonlandırma
Kontrolsüz bir süreç bulduğunuzda, onu sonlandırmanız gerekebilir. Burada kill komutu devreye giriyor. Ancak şu ayara çok dikkat etmelisiniz: kill komutu sadece PID (Süreç Numarası) ile çalışır. PID'yi ps veya top komutundan öğrenebilirsiniz.
Temel kullanım: kill [SİNYAL] [PID]
En yaygın sinyaller:
SIGTERM (15): Nazikçe sonlandırma isteği gönderir. Varsayılan sinyaldir. Önce bunu deneyin.
SIGKILL (9): Acil durum sinyali. Süreci anında, temizlik yapmadan sonlandırır. Son çare olarak kullanın.
Örnek 1: Bir süreci nazikçe sonlandırmak (PID 1234 olsun):
Örnek 2: Süreç yanıt vermiyorsa, zorla sonlandırmak:
UYARI: kill -9'u gereksiz yere kullanmak, açık dosyaların kaydedilmemesine veya veri bozulmasına neden olabilir. Önce kill -15 deneyin.
Eğer sürecin ismini biliyorsanız, PID ile uğraşmak yerine pkill komutunu da kullanabilirsiniz. Örneğin, "mybuggyapp" isimli süreci sonlandırmak için:
Pratik Senaryo: Sunucu Yavaşladı, Ne Yapmalıyım?
Benim sunucularda genelde takip ettiğim pratik akış şöyledir:
1. Önce top veya htop komutunu çalıştırıp genel duruma bakıyorum. CPU veya RAM'de tıkanma var mı?
2. Hangi kullanıcı/kullanıcıların süreçleri sorunlu, ona bakıyorum.
3. ps aux --sort=-%cpu | head -5 ile en çok CPU yiyen kesin süreçleri teyit ediyorum.
4. Eğer bir süreç kontrol dışıysa, önce kill [PID] ile nazikçe sonlandırmayı deniyorum.
5. Yanıt vermezse, son çare kill -9 [PID] kullanıyorum.
6. Sürecin neden kontrol dışına çıktığını loglardan (/var/log/ altı) araştırıyorum.
Bu temel komutları öğrenmek, sunucu yönetiminde size büyük bir özgüven ve kontrol sağlayacaktır. Unutmayın, bir sistem yöneticisinin en önemli becerilerinden biri, sorunu hızlıca teşhis edip kaynağına müdahale edebilmektir.
Umarım bu rehber faydalı olmuştur. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? top yerine farklı bir araç mı kullanıyorsunuz? Ya da süreç takibinde başka püf noktalarınız var mı? Sorusu olan veya eklemek isteyen aşağıya yazsın, beraber tartışalım.
Linux'ta çalışan her program bir süreçtir. Her süreç, işlemci (CPU), bellek (RAM) ve giriş/çıkış (I/O) gibi sistem kaynaklarını tüketir. Sunucunuz yavaşladığında veya cevap vermemeye başladığında, genellikle arka planda kontrolsüzce kaynak tüketen bir süreç vardır. İşte bu noktada süreç yönetimi devreye giriyor.
ps komutu, o an çalışan süreçlerin anlık bir görüntüsünü (snapshot) verir. En temel kullanımı ps aux şeklindedir. Bu komut, tüm kullanıcılara ait tüm süreçleri detaylı bir şekilde listeler.
Bash:
ps aux
Çıktıdaki önemli sütunlara bakalım:
USER: Süreci çalıştıran kullanıcı.
%CPU: Sürecin işlemci kullanım yüzdesi.
%MEM: Sürecin bellek kullanım yüzdesi.
COMMAND: Çalıştırılan komut.
Örneğin, CPU kullanımına göre sıralamak için ps aux çıktısını sort komutu ile birlikte kullanabiliriz. Benim sık kullandığım yöntem şudur:
Bash:
ps aux --sort=-%cpu | head -10
Bu komut, CPU'yu en çok tüketen ilk 10 süreci gösterir. Bellek için --sort=-%mem kullanabilirsiniz.
ps anlık görüntü verirken, top komutu sistem kaynaklarını ve süreçleri canlı olarak izlemenizi sağlar. Komutu çalıştırdığınızda interaktif bir ekran açılır.
Bash:
top
top ekranının üst kısmında sistem geneli CPU, bellek, swap kullanım bilgileri, alt kısmında ise süreç listesi bulunur. Varsayılan olarak CPU kullanımına göre sıralanır.
top içindeyken bazı kullanışlı tuşlar:
M: Süreçleri bellek (RES) kullanımına göre sıralar.
P: CPU kullanımına göre sıralar (varsayılan).
k: Bir süreci sonlandırmak (kill) için PID (Süreç ID) girmenizi ister.
q: Çıkmak için.
Eğer daha renkli ve kullanışlı bir arayüz istiyorsanız, htop kurmanızı şiddetle tavsiye ederim. Kurulumu ve kullanımı çok daha kolaydır.
Bash:
sudo apt install htop # Debian/Ubuntu
sudo yum install htop # RHEL/CentOS
Kontrolsüz bir süreç bulduğunuzda, onu sonlandırmanız gerekebilir. Burada kill komutu devreye giriyor. Ancak şu ayara çok dikkat etmelisiniz: kill komutu sadece PID (Süreç Numarası) ile çalışır. PID'yi ps veya top komutundan öğrenebilirsiniz.
Temel kullanım: kill [SİNYAL] [PID]
En yaygın sinyaller:
SIGTERM (15): Nazikçe sonlandırma isteği gönderir. Varsayılan sinyaldir. Önce bunu deneyin.
SIGKILL (9): Acil durum sinyali. Süreci anında, temizlik yapmadan sonlandırır. Son çare olarak kullanın.
Örnek 1: Bir süreci nazikçe sonlandırmak (PID 1234 olsun):
Bash:
kill 1234
# veya
kill -15 1234
Örnek 2: Süreç yanıt vermiyorsa, zorla sonlandırmak:
Bash:
kill -9 1234
UYARI: kill -9'u gereksiz yere kullanmak, açık dosyaların kaydedilmemesine veya veri bozulmasına neden olabilir. Önce kill -15 deneyin.
Eğer sürecin ismini biliyorsanız, PID ile uğraşmak yerine pkill komutunu da kullanabilirsiniz. Örneğin, "mybuggyapp" isimli süreci sonlandırmak için:
Bash:
pkill mybuggyapp
Benim sunucularda genelde takip ettiğim pratik akış şöyledir:
1. Önce top veya htop komutunu çalıştırıp genel duruma bakıyorum. CPU veya RAM'de tıkanma var mı?
2. Hangi kullanıcı/kullanıcıların süreçleri sorunlu, ona bakıyorum.
3. ps aux --sort=-%cpu | head -5 ile en çok CPU yiyen kesin süreçleri teyit ediyorum.
4. Eğer bir süreç kontrol dışıysa, önce kill [PID] ile nazikçe sonlandırmayı deniyorum.
5. Yanıt vermezse, son çare kill -9 [PID] kullanıyorum.
6. Sürecin neden kontrol dışına çıktığını loglardan (/var/log/ altı) araştırıyorum.
Bu temel komutları öğrenmek, sunucu yönetiminde size büyük bir özgüven ve kontrol sağlayacaktır. Unutmayın, bir sistem yöneticisinin en önemli becerilerinden biri, sorunu hızlıca teşhis edip kaynağına müdahale edebilmektir.
Umarım bu rehber faydalı olmuştur. Siz bu konfigürasyonu kendi sunucularınızda nasıl yapıyorsunuz? top yerine farklı bir araç mı kullanıyorsunuz? Ya da süreç takibinde başka püf noktalarınız var mı? Sorusu olan veya eklemek isteyen aşağıya yazsın, beraber tartışalım.