Unix / Linux - Süreç Yönetimi

Bu bölümde, Unix'te süreç yönetimi hakkında ayrıntılı olarak tartışacağız. Unix sisteminizde bir program çalıştırdığınızda, sistem o program için özel bir ortam yaratır. Bu ortam, sistemin programı başka bir program çalışmıyormuş gibi çalıştırması için gereken her şeyi içerir.

Unix'te bir komut verdiğinizde, yeni bir işlem oluşturur veya başlatır. Denediğindelsdizin içeriğini listelemek için bir işlem başlattınız. Basit bir ifadeyle süreç, çalışan bir programın bir örneğidir.

İşletim sistemi, süreçleri şu adıyla bilinen beş basamaklı bir kimlik numarasıyla izler pid ya da process ID. Sistemdeki her işlemin benzersiz birpid.

Pids sonunda tekrar eder çünkü tüm olası sayılar kullanılır ve sonraki pid rulolar veya baştan başlar. Herhangi bir anda, sistemde aynı pid'ye sahip iki işlem yoktur çünkü bu, Unix'in her işlemi izlemek için kullandığı pid'dir.

Bir Süreç Başlatma

Bir işlemi başlattığınızda (bir komut çalıştırın), onu çalıştırmanın iki yolu vardır -

  • Ön Plan Süreçleri
  • Arka Plan İşlemleri

Ön Plan Süreçleri

Varsayılan olarak, başlattığınız her işlem ön planda çalışır. Girdisini klavyeden alır ve çıktısını ekrana gönderir.

Bunun olduğunu görebilirsiniz. lskomut. Mevcut dizininizdeki tüm dosyaları listelemek isterseniz, aşağıdaki komutu kullanabilirsiniz -

$ls ch*.doc

Bu, adları ile başlayan tüm dosyaları görüntüler. ch ve ile biter .doc -

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc

İşlem ön planda çalışır, çıktı ekranıma yönlendirilir ve eğer ls komut herhangi bir girdi ister (ki istemez), klavyeden bekler.

Bir program ön planda çalışırken ve zaman alıcıyken, başka hiçbir komut çalıştırılamaz (başka işlemler başlatılamaz) çünkü program işlemeyi bitirip çıkana kadar komut istemi kullanılamaz.

Arka Plan İşlemleri

Arka plan işlemi klavyenize bağlanmadan çalışır. Arka plan işlemi herhangi bir klavye girişi gerektiriyorsa, bekler.

Bir işlemi arka planda çalıştırmanın avantajı, diğer komutları çalıştırabilmenizdir; Bir başkasını başlatmak için tamamlanana kadar beklemeniz gerekmez!

Bir arka plan işlemini başlatmanın en basit yolu bir ve işareti eklemektir (&) komutun sonunda.

$ls ch*.doc &

Bu, adı ile başlayan tüm dosyaları görüntüler. ch ve ile biter .doc -

ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc

Burada, eğer ls komut herhangi bir girdi istiyor (ki istemiyor), biz onu ön plana taşıyıncaya ve veriyi klavyeden verene kadar durma durumuna geçiyor.

Bu ilk satır, arka plan süreci hakkında bilgi içerir - iş numarası ve işlem kimliği. Arka plan ve ön plan arasında işlemek için iş numarasını bilmeniz gerekir.

Enter tuşuna basın ve şunu göreceksiniz -

[1]   +   Done                 ls ch*.doc &
$

İlk satır size şunu söyler: lskomut arka plan işlemi başarıyla tamamlanır. İkincisi, başka bir komut istemidir.

Çalışan İşlemleri Listeleme

Çalıştırarak kendi süreçlerinizi görmek kolaydır. ps (işlem durumu) komutu aşağıdaki gibidir -

$ps
PID       TTY      TIME        CMD
18358     ttyp3    00:00:00    sh
18361     ttyp3    00:01:31    abiword
18789     ttyp3    00:00:00    ps

Ps için en sık kullanılan işaretlerden biri, -f Aşağıdaki örnekte gösterildiği gibi daha fazla bilgi sağlayan (tam için f) seçeneği -

$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f

İşte görüntüleyen tüm alanların açıklaması ps -f komut -

Sr.No. Kolon AÇIKLAMASI
1

UID

Bu işlemin ait olduğu kullanıcı kimliği (onu çalıştıran kişi)

2

PID

İşlem Kimliği

3

PPID

Üst süreç kimliği (onu başlatan işlemin kimliği)

4

C

İşlemin CPU kullanımı

5

STIME

İşlem başlangıç ​​zamanı

6

TTY

İşlemle ilişkili terminal türü

7

TIME

İşlem tarafından alınan CPU süresi

8

CMD

Bu süreci başlatan komut

İle birlikte kullanılabilecek başka seçenekler de var ps komut -

Sr.No. Seçenek ve Açıklama
1

-a

Tüm kullanıcılar hakkındaki bilgileri gösterir

2

-x

Terminaller olmadan işlemler hakkında bilgi gösterir

3

-u

-F seçeneği gibi ek bilgileri gösterir

4

-e

Genişletilmiş bilgileri görüntüler

Durdurma İşlemleri

Bir süreci sonlandırmak birkaç farklı yolla yapılabilir. Genellikle, konsol tabanlı bir komuttan CTRL + C tuş vuruşu (varsayılan kesme karakteri) göndermek komuttan çıkacaktır. Bu, işlem ön plan modunda çalışırken çalışır.

Bir işlem arka planda çalışıyorsa, İş Kimliğini, pskomut. Bundan sonra,kill işlemi aşağıdaki gibi sonlandırma komutu -

$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f
$kill 6738
Terminated

Burada kill komut sonlandırır first_onesüreç. Bir işlem normal bir öldürme komutunu yok sayarsa, şunu kullanabilirsiniz:kill -9 ardından aşağıdaki gibi işlem kimliği gelir -

$kill -9 6738
Terminated

Ebeveyn ve Çocuk Süreçleri

Her unix işleminin kendisine atanmış iki kimlik numarası vardır: İşlem Kimliği (pid) ve Üst işlem kimliği (ppid). Sistemdeki her kullanıcı işleminin bir üst süreci vardır.

Çalıştırdığınız komutların çoğu kabuğa ebeveyn olarak sahiptir. Kontrol edinps -f Bu komutun hem işlem kimliğini hem de üst işlem kimliğini listelediği örnek.

Zombi ve Yetim Süreçleri

Normalde, bir çocuk süreç öldürüldüğünde, üst süreç bir SIGCHLDsinyal. Daha sonra ebeveyn, gerektiğinde başka bir görev yapabilir veya yeni bir çocuğu yeniden başlatabilir. Ancak bazen ana süreç, çocuğu öldürülmeden önce öldürülür. Bu durumda, "tüm süreçlerin ebeveyni",initsüreç, yeni PPID (üst süreç kimliği) olur. Bazı durumlarda bu süreçlere öksüz süreçler denir.

Bir süreç öldürüldüğünde, ps liste yine de süreci bir Zdurum. Bu, zombi veya feshedilmiş bir süreçtir. İşlem öldü ve kullanılmıyor. Bu süreçler öksüz süreçlerden farklıdır. Yürütmeyi tamamladılar, ancak yine de işlem tablosunda bir giriş buldular.

Daemon Süreçleri

Daemon'lar, genellikle kök izinleriyle ve diğer işlemlerden hizmet talepleriyle çalışan sistemle ilgili arka plan işlemleridir.

Bir arka plan programının kontrol terminali yoktur. Açamaz/dev/tty. Eğer yaparsan"ps -ef" ve şuna bak tty alan, tüm artalan süreçlerinde bir ? için tty.

Kesin olmak gerekirse, arka planda çalışan bir süreç, genellikle birlikte çalışabileceği bir şeyin olmasını bekler. Örneğin, yazdırma komutlarını bekleyen bir yazıcı arka plan programı.

Uzun işlem gerektiren bir programınız varsa, onu bir arka plan programı haline getirip arka planda çalıştırmaya değer.

Üst Komuta

top command çeşitli kriterlere göre sıralanmış süreçleri hızlı bir şekilde göstermek için çok kullanışlı bir araçtır.

Sık sık güncellenen ve fiziksel ve sanal bellek, CPU kullanımı, yük ortalamaları ve meşgul süreçleriniz hakkında bilgiler gösteren etkileşimli bir tanı aracıdır.

İşte top komutunu çalıştırmak ve farklı işlemler tarafından CPU kullanım istatistiklerini görmek için basit sözdizimi -

$top

İş Kimliği ve İşlem Kimliği

Arka plan ve askıya alınan süreçler genellikle şu yolla manipüle edilir: job number (job ID). Bu numara, işlem kimliğinden farklıdır ve daha kısa olduğu için kullanılır.

Ek olarak, bir iş, bir dizi halinde veya aynı anda paralel olarak çalışan birden çok işlemden oluşabilir. İş kimliğini kullanmak, bireysel süreçleri izlemekten daha kolaydır.