Bir terminalden gedit
metin editörü açtığınızı ve üzerinde çalıştığınızı düşünelim. Terminali gedit
kapatmadan önce kapatırsanız, terminal kapatılır kapanmaz gedit de kapanır. Peki burada neler oluyor? % Co_de%, terminalin altında bir alt işlem olarak çalışır. Terminali kapattığınızda, çocuk sürecini öldüren işleme bir asmak sinyali ( gedit
) gönderilir.
Diğer taraftan, eğer çocuk işleminizi (burada SIGHUP
) ana terminali kapattıktan sonra bile çalışmaya devam etmesini istiyorsanız, işleminizin asılsız sinyallere karşı bağışıklık olmasını istersiniz. Böylece terminali kapatmak çocuk sürecini kapatmaz. gedit
tam olarak bu işi yapıyor.
nohup
, terminalden bir komutu çıkarmaz , komut dosyanız SIGHUP'u yok sayar ve stdout / stderr'i yeniden yönlendirir nohup.out bir dosyaya, böylece komut, oturumu kapattıktan sonra arka planda çalışmaya devam edebilir. Kabuk / terminali kapatır veya oturumu kapatırsanız, komutunuz artık o kabuğun bir çocuğu değildir. Bu init sürecine aittir. % Co_de% cinsinden arama yaparsanız, artık işlem 1'e (init) ait olduğunu görürsünüz. Ön plana geri alınamaz çünkü önalan artık mevcut değildir.