Bursa Bilgisayar

Linux İşletim Sistemlerinde Süreçler

Merhaba arkadaşlar bu makalemde linuxta süreçler konusunu konu olarak yazmaya karar vermiş bulunuyorum umarım sizlere bir nebze faydam dokunur. 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.

Kullanıcıların haberi bile olmadan çalışan süreçler, Linux makinasındaki G/Ç işlemlerini gerçekleştirebilmek için sürekli faaliyet içinde bulunurlar. Onlarca süreçten bazıları kullanıcıların sisteme girmesini sağlarken (getty) bazıları da WWW ve FTP gibi İnternet tabanlı istekleri yerine getirir (httpd, ftpd) ve bunun gibi.

Arkaplanda Çalıştırma

Bir komutu arkaplanda çalıştırmak için, komutun sonuna and yani

&

karakterini getirin.

Komutu girdikten sonra tekrar kabuk istemcisine düşecek ve kaldığınız yerden devam edebileceksiniz. Program, arkaplanda diğer süreçlerle çakışmadan bir süre çalışır ve işi bittiğinde durur.

htop &

Çıktı:

[2] 1800

Sizde bu rakamlar farklılık gösterecektir yeni giren arkadaşlara duyurulur.

Komutun arkaplana atılmasından sonra ekranda yeralan 2 numarası, sürecin sıra numarasını, 1800 sayısı ise süreç kimliğini (Process ID) gösterir. Her program, sistem kaynaklarını biraz daha azalttığından Linux’çuların deyimiyle makina yavaşlar.

Çalışan programların listesini görmek için

ps

komutunu kullanın. Hiç parametre çıktısı vermeden yazılırsa sadece üzerinde çalışılan kullanıcının süreçleri ekrana gelir. Sık kullanılan bir başka parametre dizisi de uax tir. Bu sayede sistemdeki o anda çalışan tüm programlar daha ayrıntılı bir şekilde ekrana listelenir.

ps

Çıktı:

  PID TTY          TIME CMD
 3019 pts/2    00:00:00 bash
 3032 pts/2    00:00:00 ps
<code>

<code>ps -aux

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 2036 716 ? Ss 03:25 0:01 init [2]
root 2 0.0 0.0 0 0 ? S 03:25 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 03:25 0:00 [migration/0]
root 4 0.0 0.0 0 0 ? S 03:25 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S 03:25 0:00 [watchdog/0]
root 6 0.0 0.0 0 0 ? S 03:25 0:00 [migration/1]
root 7 0.0 0.0 0 0 ? S 03:25 0:00 [ksoftirqd/1]
root 8 0.0 0.0 0 0 ? S 03:25 0:00 [watchdog/1]
root 9 0.0 0.0 0 0 ? S 03:25 0:00 [events/0]
root 10 0.0 0.0 0 0 ? S 03:25 0:00 [events/1]
root 11 0.0 0.0 0 0 ? S 03:25 0:00 [cpuset]
root 12 0.0 0.0 0 0 ? S 03:25 0:00 [khelper]
root 13 0.0 0.0 0 0 ? S 03:25 0:00 [netns]
root 14 0.0 0.0 0 0 ? S 03:25 0:00 [async/mgr]
root 15 0.0 0.0 0 0 ? S 03:25 0:00 [pm]
root 16 0.0 0.0 0 0 ? S 03:25 0:00 [sync_supers]
root 17 0.0 0.0 0 0 ? S 03:25 0:00 [bdi-default]
root 18 0.0 0.0 0 0 ? S 03:25 0:00 [kintegrityd/0]
root 19 0.0 0.0 0 0 ? S 03:25 0:00 [kintegrityd/1]
root 20 0.0 0.0 0 0 ? S 03:25 0:00 [kblockd/0]
root 21 0.0 0.0 0 0 ? S 03:25 0:00 [kblockd/1]
root 22 0.0 0.0 0 0 ? S 03:25 0:00 [kacpid]
root 23 0.0 0.0 0 0 ? S 03:25 0:00 [kacpi_notify]
root 24 0.0 0.0 0 0 ? S 03:25 0:00 [kacpi_hotplug]
root 25 0.0 0.0 0 0 ? S 03:25 0:00 [kseriod]
root 28 0.0 0.0 0 0 ? S 03:25 0:01 [kondemand/0]
root 29 0.0 0.0 0 0 ? S 03:25 0:01 [kondemand/1]
root 30 0.0 0.0 0 0 ? S 03:25 0:00 [khungtaskd]
root 31 0.0 0.0 0 0 ? S 03:25 0:00 [kswapd0]
root 32 0.0 0.0 0 0 ? SN 03:25 0:00 [ksmd]
root 33 0.0 0.0 0 0 ? S 03:25 0:00 [aio/0]
root 34 0.0 0.0 0 0 ? S 03:25 0:00 [aio/1]
root 35 0.0 0.0 0 0 ? S 03:25 0:00 [crypto/0]
root 36 0.0 0.0 0 0 ? S 03:25 0:00 [crypto/1]
root 241 0.0 0.0 0 0 ? S 03:25 0:00 [ksuspend_usbd]
root 242 0.0 0.0 0 0 ? S 03:25 0:00 [khubd]
root 243 0.0 0.0 0 0 ? S 03:25 0:00 [ata/0]

Gelelim burada yeralan bilgileri sırasıyla açıklamaya :

PID: süreç numarası. Her sürecin farklı bir numara alması sistem tarafından düzenlenir.

%CPU: İşlemcinin % olarak ne kadarı süreç tarafından kullanılıyor ?

%MEM: % olarak hafızada kapladığı yer

SIZE: Programın toplam kullandığı bellek alanı (kilobyte)

RSS: Programın bellekte kapladığı gerçel alan. Bu değer paylaşılan sistem kütüphaneleri (shared library) nedeniyle genellikle SIZE değerinden küçüktür.

TTY: sürecin çalıştırıldığı (sanal) terminal

STAT: süreç o sırada ne yapıyor ?

S: Uyumakta, bu durum genellikle sürecin bir G/Ç işlemi (örneğin fare’nin hareketi ya da ağdan gelecek veriler) beklemesi sırasında olur.

R: Çalışabilir. Çalışabilir süreçler, gereksinim duydukları bütün sistem kaynaklarına sahip olan süreclerdir. Çekirdek (tek işlemcili bir makinada) belirli aralıklarla bu süreçlerden sadece birini çalıştırır.

T: Durmuş. Bu durum sürecin kullanıcı tarafından (örneğin Control-Z tuşlarına basılarak) durdurulmasında görülür.

Z: Zombie. Bu tür süreçler, kendisini çalıştıran sürece mesaj bırakamadıklarından takılmış süreçlerdir. Öldürülemezler ancak sitem kaynaklarını da kullanmazlar.

D: Kesilemez uykuda. Bazı G/Ç işlemleri o sırada bu işlemi yapan sürecin kesilmemesini gerektirir. Böyle durumdaki süreçleri de ilgili G/Ç işlemi bitinceye kadar öldüremezsiniz.

START: sürecin çalıştığı zaman

COMMAND: komut satırından girilen programın ismi

ps komutuna bilgisayar üzerinde çalıştığınız her an ihtiyaç duymanız mümkündür, bu yüzden çeşitli parametrelerle kullanmayı öğrenmelisiniz.

Klavye Üzerinde Kesinti

Linux (ve UNIX) altında, klavyeden bazı tuş kombinasyonları yardımıyla çalışmakta olan program kesintiye uğratılabilir.

Klavyeden kabuk komut satırına yazılan bir programın uzun sürmesi halinde, eğer daha önceden komutun arkasına ” & ” işareti koyup arkaplanda çalışır halde bırakılmamışsa, klavyeden yapılan bir müdahele ile durdurulup arkaplanda çalışır hale getirilebilir. Örnek vermek gerekirse, uzun sürmesi beklenen bir komutu klavyeden yazalım ve ardından

ctrl-c

tuşlarına basalım:

linux:

find /usr -name "bursabilgisayar*" -print&

Çıktı:

[2]-  Done                    find /usr -name "bursabilgisayar*" -print

Bu esnada sürecin çalışmasına ara verilmiş, fakat program tamamen durmamıştır. Programın çalışmasını arkaplanda sürdürmek için bg komutunu kullanın.

bg

Bu komutu tekrar komut satırında çalışacak ve klavyeden bilgi girilecek şekilde terminale bağlamak için fg yazın:

fg

Bir programı çalıştırmaya başlattıktan sonra tamamen durdurmaya karar vermişseniz klavyeden Control-C tuşlarına basın.

Durdurulup arkaplanda çalışmaya yönlendirilen süreçlere kısaca görev ismi verilir. Tüm görevleri görebilmek için

jobs

komutunu yazın.

Görevler, birden fazla oldukları zaman sıra numarası ile belirtilirler.

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 -9

komutu kullanılır.

Bu komutu icra etmek için komut satırında

top

yazın ve kendinize bir pid numarası seçin.

3150 yunus  20   0  2468 1208  900 R    0  0.0   0:00.04
top
kill 3150

Birçok süreç sizden bu mesajı aldıktan sonra, dosya sistemi üzerinde yarattığı geçici dosyaları, dosyalar üzerine koyduğu kilitleri temizlemek gibi yapması gereken işlemleri yaptiktan sonra çalışmasına son verecektir. Eğer öldürmeye çalıştığınız süreç herhangi bir nedenle takılmışsa ve bu komuta tepki vermiyorsa aşağıdakini deneyin:

kill -9 3150

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. Diğer sinyaller ve anlamları yeri geldikçe diğer bölümlerde anlatılacaktır.

-Bilgisayar.com’dan saygılar sevgiler. İşinize yaradıysa bir duva edin kafidir.

Related posts

324 thoughts on “Linux İşletim Sistemlerinde Süreçler

  1. {
    {I have|I’ve} been {surfing|browsing} online more than {three|3|2|4} hours
    today, yet I never found any interesting article like yours.
    {It’s|It is} pretty worth enough for me. {In my opinion|Personally|In my view},
    if all {webmasters|site owners|website owners|web owners}
    and bloggers made good content as you did, the {internet|net|web} will be {much more|a lot
    more} useful than ever before.|
    I {couldn’t|could not} {resist|refrain from} commenting.
    {Very well|Perfectly|Well|Exceptionally well} written!|
    {I will|I’ll} {right away|immediately} {take hold…

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

 Characters available