Kabuk üzerinde yapılan işlemler, bir parent proses altında kendine ait bir child proses içerisinde çalışır.Örneğin bash kabuğunda bir oturumunuz var ve bir script çalıştırıyorsunuz oturum kapandığı esnada çalışır durumda olan ilgili script de sonlanır.Teorik olarak kapanma sebeplerini açıklamak istiyorum.Oturum açıldığı esnada bir parent proses açılır ve yapılan ek işlemler bu proses’e child proses olarak bağlanır.Dolayısıyla oturum kapatıldığı esnada herhangi bir script çalışır durumda olsa bile parent proses, 1 numaralı “SIGHUP” sinyalini alacağı için kısa bir süre içerisinde kendine bağlı olan child proses’leri de sonlandıracaktır.Ancak “nohup” gibi hareket eden bir araç ile scriptler çalıştırılır ise durum tam anlamıyla farklı bir hal alır ve oturum kapansa bile proses sonlanmaz.
Nohup, çalıştırılan işlemlere ait child proses’leri, en yukarıda bulunan 1 numaralı parent prosese migrate eder ve gelebilecek hup sinyallerinden child prosesleri korur. Dolayısıyla oturum kapansa bile çalışan işleme ait proses, 1 nolu parent proses altına migrate edilerek arka planda sonlanana kadar çalışması sağlanır.
Nohup kullanım örneği:
nohup seq 0 9999990000000 1>/tmp/out < /dev/null &
Yukarıdaki komut ile ulaşmak istenilen asıl amaç, “seq” komutu ile belirtilen doğal sayılar arasında ramdom sayılar üretip, /tmp klasörü altında bulunan out isimli dosyaya sonucu yazdırmaktır.Komut sonuna dahil edilen “/dev/null” ise klavye davranışları önlemek adına kullanılır.Nohup ile çalıştırma işlemi başladıktan hemen sonra, shell oturumu kapatılıp yeni bir oturum açılarak proses’in o anki durumu “ps” komutuna verilecek çeşitli direktifler ile detaylıca veya top komutu ile basitce gözlemlenebilir.
Nohup edilen programa ait 25571 nolu proses’in 1 numarali parent proses altında çalıştığı, “pstree -p 1″ komutu ile görülmek istenirse , aşapıdaki gibi bir görüntü ortaya çıkar.

Yukarıdaki ekran görüntüsü 25571 nolu child proses’in 1582 > 24634 > 25547 > 25549 nolu parent prosesler dizisi altında olduğunu ifade ediyor.Zira zaten her proses, bir üst seviyede bulunan diğer bir parent prosese bağlıdır.
Not: Ancak işletim sistemi kabuğunun çeşitli özelliklerine göre bu tür proses korumaları yapılabilir.
Share on Facebook