Gönderen Konu: GNU/Linux’ta Çalışan Süreçleri Öldürmek  (Okunma sayısı 4884 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı fortran

  • Forum Gurusu
  • *****
  • İleti: 1.671
  • Bir insanı sevmekle başlar her şey...
    • get GNU
GNU/Linux’ta Çalışan Süreçleri Öldürmek
« : 28 Nisan 2014, 12:46:04 öö »

UNIX’in en büyük silahlarından biri süreçlerdir. Her süreç sistemde bağımsız çalışan, birbirini etkilemeyen ve herbiri kendi kaynağını kullanan programdır. Süreçler arkaplanda veya kabuğun kontrolünde çalışabilir. Çekirdek, her sürecin kullandığı sistem kaynağından haberdar olur ve bu kaynakların süreçler arasında adilce paylaşılmasından sorumludur. Bir süreç, aksi belirtilmedikçe çalıştığı süre içinde klavyeden bilgi alır ve ekrana bilgi verir. Çalışan programların listesini görmek için “ps” komutunu kullanabiliriz. Hiç parametre vermeden yazılırsa sadece üzerinde çalışılan kullanıcının süreçleri ekrana gelir.

Kod: [Seç]
ps
PID TTY TIME CMD
25359 pts/5 00:00:00 bash
25666 pts/5 00:00:00 ps

Sistemde çalışan tüm süreçlerin listesini görmek için aşağıdaki komutu çalıştırmalıyız.

Kod: [Seç]
ps -e
Ayrıntılı listeleme için l parametresini ekliyoruz.

Kod: [Seç]
ps -el
Ebeveyn süreçleri için şu kodu vermek yeterlidir:

Kod: [Seç]
ps -eF
Bsd stilinde süreçlerin tümünü listelemek için ise şu kod verilebilir:

Kod: [Seç]
ps aux
Süreçleri ve alt süreçleri alfabetik sıra ile görümtülemek için ise:

Kod: [Seç]
pstree
Bir kullanıcıya ait süreçlerin listesini görebilmek için (u) parametresini kullanıyoruz.

Kod: [Seç]
ps -u kullanıcı-adı
Süreçlerle birlikte işlemci ve bellek miktarlarınıda görmek istiyorsak.

Kod: [Seç]
ps -u kullanıcı-adı u
Top aracı ps aracı ps aracının aksine, süreçleri anlık değişimleride içerecek şekilde izler.Sistem üzerinde bulunan uygulamalar, üzerlerindeki iş yüküne göre sürekli olarak kaynak taleb ederler. Sistem kaynakları, önceliklerine göre çalışan uygulamalar arasında sürekli olarak paylaştırılmaktadır. Top aracı bu anlık değişimleri sürekli olarak izleyebilmemize olanak tanır. Top aracının en temel kullanımı şöyledir:

Kod: [Seç]
[root@localhost ~]# top
Yukarıda görüldüğü üzere sistem kaynaklarında anlık olan tüm değişmeleri izlemektedir. İlk bölümde sisteme bağlanmış olan kullanıcı sayıları ve sistem yükünü görüntüler. Hemen takib eden satırda sistemde çalışan süreç sayısı ve bu süreçlerin durumlarıyla ilgili istatistiki veriler gelir. Sonraki alanlar ise sırasıyla işlemci,hafıza ve takas alanı ile ilgili verilerdir. İkinci bölümde ise süreçler ayrıntılı olarak sütünlarda listelenir. Sütünlardaki parametrelerin büyük bir bölümü ps aracındaki ile aynıdır.

Süreçlerin Sona Erdirilmesi

Her an çalışan süreçlerden biri veya birkaçı, beklenmedik döngüye girebilir. Bunun sonucu olarak sistemin kaynaklarını, özellikle hafızayı tüketici bir duruma gelebilir. Bu tür kısır döngüye giren süreçleri bulup, eğer hayati önem taşımıyorlarsa `öldürmek’ gerekir. Süreci öldürmekten kasıt, programı tamamen durdurarak sistemle ilişkisini kesmektir. Bu sayede programın hafızada kapladığı bölge serbest kalacak, çekirdek de hafıza düzenlemesini tekrar yaparak başka süreçlere daha fazla yer ayıracaktır. Bir süreci öldürmek için kill komutu kullanılır. Bunun için ilgili programın PID’inin tespit edilmesi gerekir. Sözgelimi, benim bilgisayarımda şu an, ps -el komutuyla aldığım çıktıda Firefox’un PID’i 25470 idi. Buna göre terminale şunu yazmam gerekiyor:

Kod: [Seç]
kill 25470
Böylelikle Firefox kapanacaktır. Eğer öldürmeye çalıştığınız süreç, herhangi bir nedenle takılmışsa ve bu komuta tepki vermiyorsa, aşağıdaki biçimde deneyin:

Kod: [Seç]
kill -9 25470
Artık programın sistemle ilişkisi tamamen kesilmiştir. Kill komutu, -9 seçeneğiyle, sürece 9 numaralı sinyali gönderir. Bu sinyali alan sürecin yukarıda sözü edilen iki özel durum dışında çalışmayı sürdürmesi olanaksızdır. -9 seçeneğini özellikle sistem süreçleri üzerinde gerekmedikçe kullanmamalısınız.

Süreçleri , süreç numaralarına gerek duymadan isimleriyle öldürebilmek için killall komutu kullanılır.

Kod: [Seç]
killall firefox
getgnu.org