Linux komutlarını arka planda çalıştırmak, kullanıcının komut çalışırken diğer görevleri yürütmeye devam etmesine olanak tanır. Arka planda bir komut çalıştırmanın birden çok yolu vardır; basit yöntemlerden biri, komut satırının sonuna bir ve işareti (&) eklemektir.
Bir işlem arka planda çalışacak şekilde ayarlandığında, ona jobs komutunu kullanarak erişebiliriz. Bu makale, bir komutu arka planda çalıştırmanın tüm farklı yollarını içerir.
Bir arka plan işlemini çalıştırmanın farklı yollarının listesi aşağıdaki gibidir:
- Ve İşareti (&) İşareti Ekleme
- bg Komutunu Kullanma
- nohup Komutunu Kullanma
- Disown Komutunu Kullanmak
- tmux yardımcı programını kullanma
Bir arka plan işlemini çalıştırmak için tüm yöntemlerin ayrıntıları aşağıdadır:
1: Ve İşaretini (&) Kullanma
Linux’ta Ampersand (&), arka planda ayrı bir işlem olarak komut gönderen bir kabuk işlecidir. Ve işaretinin (&) bir komutla birleştirilmesi, bir arka plan işlemi olarak yürütülür ve kabuğun diğer komutları hemen işlemeye devam etmesine olanak tanır.
Ampersand işareti kullanan bir arka plan işlemi için sözdizimi:
$ [komut] &
Ve işareti simgesi her zaman komutun sonuna “&” ile komutun son karakteri arasında bir boşluk olacak şekilde eklenir.
For example, create a sleep process for 40 sec.
$ sleep 40
Görüldüğü gibi terminal uyku komutunu çalıştırıyor ve başka bir görev yapmamıza izin vermiyor.
Şimdi bu işlemi durdurmak için “Ctrl + Z” tuşlarına basın. Daha sonra, bu sefer aynı uyku komutunu çalıştıracağız, ancak onunla bir ve işareti operatörü kullanmak onu arka planda kuracaktır.
$ sleep 40 &
Şimdi bu süreç arka planda. Arka planda çalışan işlemi listelemek için şunu kullanın:
$ jobs -l
Şimdi aşağıdakileri kullanarak bu arka plan işlemini sonlandırın:
$ kill- 9 [job-ID]
Örneğin, çalışan mevcut uyku sürecini sonlandırmak için şunu kullanın:
$ kill -9 6149
Artık uyku işlemi, arka planda çalışan işlemin listesini onaylamak için öldürülür.
$ jobs -l
& işaretinin kullanılmasına başka bir örnek gedit komutudur.
Örneğin, doğrudan terminali kullanarak gedit metin editörünü açarsak, kabuğu başka işler için kullanmak zorunda kalırız, yoksa önce mevcut işlemi durdurmamız gerekir.
$ gedit
Yukarıdaki komutu kullanmak, onu terminalin önünde açacak olan metin düzenleyiciyi açacaktır.
Ancak gedit komutunun sonunda “&” kullandıktan sonra, kabuk diğer işlemler için ücretsizdir:
$ gedit &
2: ‘bg’ Komutunu Kullanma
bg komutu, komutları arka planda çalıştırmanın ikinci yoludur. Bu komut, işlem arka planda çalışırken kullanıcının terminalde çalışmaya devam etmesini sağlayarak terminali diğer görevler için serbest bırakır. bg komutu, kullanıcı oturumu kapatsa bile çalışan, uzun süredir devam eden bir arka plan işlemi için kullanılır.
Bir ampersand işareti gibi, her seferinde terminale bg metni gönderdiğinizde onu komuta ekleme konusunda endişelenmemize gerek yok. İşlemi arka planda çalıştırmaya başlayacak ve terminali ileride kullanmak üzere serbest bırakacaktır.
Örneğin, önceki örneği kullanalım ve aşağıdakileri kullanarak uyku komutunu gönderelim:
$ sleep 40
Şimdi süreç çalışıyor ve terminal kullanıma açık değil. bg komutunu kullanmak ve bu işlemi arka planda göndermek için önce “Ctrl + Z” tuşlarına basarak ve şu komutu yürüterek mevcut yürütme işlemini durdurmalıyız:
$ bg
bg komutunu gönderdikten sonra uyku işlemi arka planda devam etmeye başladı. Sonunda, mevcut işlemin arka planda çalıştığını belirten bir “&” işareti görebiliriz.
Arka plan işlemini kontrol etmek için jobs komutunu çalıştırın:
$ jobs -l
3: nohup Komutunu Kullanma
Nohup komutu, Linux’ta çalışan arka plan işlemleri listemizde üçüncü sırada yer alıyor. Komut, “kapatma yok” anlamına gelir ve terminal oturumu bitene kadar işlemin sonlandırılmasını önlemek için kullanılır. Nohup kullanılarak bir işlem yürütüldüğünde, kullanıcı oturumu kapatsa bile çalışmaya devam eder ve işlemin çıktısı “nohup.out” adlı bir dosyaya yönlendirilir.
Google’a arka planda sürekli ping atmak için nohup komutu şu şekildedir ve çıktı GooglePing.txt metin dosyasına yönlendirilir:
$ nohup ping google.com > GooglePing.txt &
Bu komutu yazdıktan sonra terminalin boş olduğunu ve arka planda google’a sürekli ping atmak için bir arka plan işleminin çalıştığını görebiliriz.
Günlük dosyasına erişmek için aşağıdaki komutu kullanabiliriz:
$ cat GooglePing.txt
Günlük dosyasına ana ekrandan GUI kullanılarak da erişilebilir.
4: Disown Komutunu Kullanmak
Disown komutu, bir işlemi kabuktan kaldırır ve arka planda çalıştırır. Bir işlem reddedildiğinde, artık terminalle ilişkili değildir ve kullanıcı oturumu kapattıktan veya terminali kapattıktan sonra bile çalışmaya devam eder.
Daha önce, işlemi yürüttükten sonra arka planda gönderen ve işareti “&” komutunu kullandık, ancak kabuğu kapattığımızda işlem sonlandırılıyor. Bu disown komutundan kurtulmak için var.
Disown komutu bağımsız olarak çalışamaz ancak arka planda en az bir işlem çalışıyor olmalıdır.
Komutunuzu arka plana gönderecek olan & ve işaretiyle aşağıdaki komutu çalıştırın.
$ ping google.com > GooglePing.txt &
Dosya oluşturulduktan sonra onu jobs komutunu kullanarak listeleyebiliriz.
Artık işlemimiz, onu terminal kullanımından ayırmak için arka planda çalışıyor:
$ disown
İşlemin terminalden ayrıldığını doğrulamak için jobs komutunu tekrar çalıştırın:
$ jobs -l
İşlemimiz şu anda çalışıyor, ancak artık terminalin içinde gösterilmiyor:
İşlemimizi onaylamak için, o ping dosyasına erişmek için cat komutunu kullanabiliriz:
$ cat GooglePing.txt
Bu işlemi terminalden başarıyla ayırdık ancak arka planda çalışmaya devam ediyor.
5: tmux Yardımcı Programını Kullanma
Tmux, bir tür terminal çoklayıcı yardımcı programıdır. Tmux kullanarak, tek bir kabuk içinde birden fazla terminal oturumu oluşturabiliriz. İşlemleri arka planda çalıştırma yeteneği sağlar.
Tmux’ta bir arka plan işlemi çalıştırmak için, yeni bir oturum oluşturabilir ve ardından Ctrl-b ve ardından d tuş bileşimini kullanarak oturumdan ayrılabilirsiniz.
Tmux yardımcı programını Ubuntu ve Linux mint kullanımına yüklemek için:
$ sudo apt install tmux
Fedora dağıtımında yüklemek için:
$ sudo dnf install tmux
Arch Linux’ta yüklemek için şunu çalıştırın:
$ sudo pacman -S tmux
Şimdi yeni bir terminal açmak için tmux komutunu çalıştırın.:
$ tmux
Yeni bir tmux oturumu oluşturmak için şunları kullanın:
$ tmux new -s [session_id]
Tüm tmux oturumlarını listelemek için şunları kullanın:
$ tmux ls
Bir tmux oturumunu sonlandırmak için şu komutu kullanın:
$ tmux kill-session -t [session_id]
Örneğin, “0” tmux oturumunu sonlandırmak için şunu kullanın:
$ tmux kill-session -t 0
Burada mevcut çalışan tmux aktif oturumunu listeledik ve yukarıdaki komutu kullanarak onu sonlandırdık:
- Tmux oturumundan ayrılmak için “Ctrl+B+D”ye basın.
- Tüm komutların bir listesini almak için “Ctrl+B+?” tuşlarına basın.
- Tmux pencereleri arasında geçiş yapmak için “Ctrl+B+O” tuşlarına basın.
- Tmux terminalini dikey olarak bölmek için “Ctrl+B”ye basın ve % yazın.
Tmux’tan ana terminale geri dönmek için şunu kullanın:
$ exit
Sonuç
Linux’ta arka plan uygulamalarını çalıştırmak, kullanıcıların terminalden çıktıktan veya pencereyi kapattıktan sonra bile uzun süredir devam eden görevlerini sürdürmelerini sağlayan güçlü bir özelliktir. Bir işlemi arka planda göndermek için genellikle bir & işareti veya bg komutu kullanılır. Ancak, bir işlemi terminalden ayırmak için nohup veya disown komutunu da kullanabiliriz. Sonunda, birden fazla terminal oluşturmak ve terminali bozmadan arka plan işlemlerini çalıştırmak için tmux yardımcı programını kullanabiliriz.
Yazının orijinalini buradan okuyabilirsiniz.
Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.