KategorilerLinux

Nohup Command

Linux terminallerinde çalışırken tüm işlemler genellikle çalıştırılır ve ardından işlem bitinceye kadar beklenir. İşlem süresi boyunca terminal meşgul olur. Terminal penceresini işlem sürerken kapattığımızda işlem yarıda kesilir. Terminal penceresinde bir işlemi arka planda nasıl çalıştıracağız? Terminal’i kapatınca işlem nasıl devam edecek? Bu noktada Nohup devreye giriyor.

Nohup Command

Nohup, no hang up’ın kısaltmasıdır. Türkçe’si “kapatma yok” gibi. Linux sistemlerinde, terminalden çıktıktan sonra bile süreçlerin çalışır durumda kalmasını sağlayan bir komuttur. İşlemlerin SIGHUP (Sinyal kapatma) sinyalini almasını engeller. Bu terminal kapatıldığında veya çıkıldığında bir işleme gönderilen sinyaldir.

Nohup Command Syntax

Komutun syntax’ı (söz dizimi) şöyle;

nohup command arguments
Code language: Bash (bash)

veya

nohup options
Code language: Bash (bash)

Nasıl çalıştığına birlikte bakalım.

Nohup versiyon kontrolü

İlk komut denemesine nohup aracının versiyonunu kontrol etmek ile başlayabiliriz.

nohup --version
Code language: Bash (bash)

Bu komutun çıktısı:

nohup (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jim Meyering.
Code language: HTML, XML (xml)

Komutu linux işletim sisteminde çalıştırdığımızda yukarıdaki gibi çıktı verirken; mac os işletim sisteminde bu parametre çalışmamakta.

İşlemleri Nohup kullanarak başlatmak

Eğer bir işlemi başlatarak terminali kapatsak bile devam etmesini istiyorsanız, terminal’e aşağıdaki gibi komut yazmalısınız. Bu işlem çalışmaya; siz onu durduruna yani “kill” yapıncaya kadar çalışır.

nohup ./hello.sh
Code language: Bash (bash)

Bu komutun çıktısı aşağıdaki gibidir.

appending output to nohup.out
Code language: CSS (css)

Çalıştırdığınız komuta ait çıktılar “nohup.out” dosyasına yazılacaktır.

Eğer birden fazla işlemi arkaplanda çalıştırmak ve çıktılarını farklı dosyalara yazmak isterseniz:

nohup ./hello.sh > output.txt
Code language: Bash (bash)

şeklinde kullanabilirsiniz. İşlem devam ederken çıktıları görmek için “cat” komutunu kullanın.

cat output.txt
Code language: Bash (bash)

İşlemleri Nohup kullanarak arkaplanda başlatmak

İşlemi başlatarak arkaplanda çalışmasını istediğimizde komut sonuna “&” işareti ekleriz. Örneğin google.com’a arkaplanda ping gönderen bir işlemi başlatmak için komutumuz şöyle:

nohup ping google.com &
Code language: Bash (bash)

Komut çıktısı:

[1] 37017
appending output to nohup.out
Code language: CSS (css)

Çalışan arkaplan işlemini kontrol etmek aşağıdaki komutu kullanarak işlem id’sini görebiliriz.

pgrep -a ping
Code language: Bash (bash)

Komut çıktısı:

37017

Eğer arkaplanda çalışan işlemi kapatmak istiyorsak komut satırına şu komutu yazarak işlemi sonlandırırız.

kill 37017
Code language: Bash (bash)

Komut çıktısı:

[1]  + terminated  nohup ping google.com
Code language: CSS (css)

Özet

  1. İşlemler nohup ile çalıştırıldığında “SIGHUP” sinyalinden etkilenmezler. Böylece terminalden çıksanız bile çalışmaya devam ederler.
  2. Bir işlem nohup kullanılarak başlatıldığında STDIN kullanıcı tarafından kullanılabilir olmayacak.
  3. Varsayılan olarak işlem çıktıları “stdout” ve “stderr” yerine “nohup.out” dosyasına yazılır.

Kaynak: https://www.digitalocean.com/community/tutorials/nohup-command-in-linux

Kapak görseli: Patrick Tomasso

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir