Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Linux'ta Arka Planda Süreç Çalıştırma: nohup ve screen Kullanımı ile Bağlantı Kopması Sorunu Çözme

devron

Üye
Katılım
14 Mart 2026
Mesajlar
13
Merhaba arkadaşlar, bugün sizlere özellikle uzaktan bağlandığımız sunucularda sıkça karşılaştığımız can sıkıcı bir sorunu ve çözümlerini anlatacağım. SSH bağlantınız koptuğunda çalışan işlemleriniz de duruyor mu? Uzun süren bir yedekleme, derleme veya dosya transferi işlemi yarıda kalıyor mu? O zaman bu rehber tam size göre. nohup ve screen araçlarını kullanarak, terminalinizi kapatsanız bile süreçlerinizin sorunsuz çalışmaya devam etmesini sağlayacağız.

🔍 Sorun Nedir?

SSH ile bir sunucuya bağlandığımızda, başlattığımız tüm süreçler o terminal oturumuna (session) bağlıdır. Bağlantı koptuğunda veya terminal penceresini kapattığımızda, sistem oturumu sonlandırır ve bu oturuma bağlı TÜM süreçlere SIGHUP (Hangup) sinyali göndererek onları durdurur. İşte bu sinyali yakalayıp görmezden gelmek veya oturumdan bağımsız çalışacak bir ortam yaratmak bizim çözümümüz olacak.

⚙️ Çözüm 1: nohup (Basit ve Hızlı)

`nohup` (no hang up), bir komutu başlatarak onun SIGHUP sinyalini almasını engelleyen temel bir araçtır. Kullanımı son derece basittir.

Komutunuzun önüne `nohup` yazmanız ve sonuna `&` işareti ekleyerek arka plana atmanız yeterli. Çıktılar varsayılan olarak çalıştırıldığınız dizindeki `nohup.out` dosyasına yazılır.

Bash:
nohup uzun_surecek_komutunuz &

Örnek olarak, bir Python betiğini arka planda çalıştıralım:

Bash:
nohup python3 benim_scriptim.py &

Komutu çalıştırdıktan sonra size işlem numarasını (PID) verecektir. Bu PID'yi daha sonra kontrol veya sonlandırma için kullanabilirsiniz.

⚠️ nohup Kullanırken Dikkat

Çıktılar nohup.out dosyasına yazılır. Bu dosya zamanla çok büyüyebilir. Çıktıyı farklı bir dosyaya yönlendirmek isteyebilirsiniz:
Bash:
nohup komutunuz > cikti.log 2>&1 &
Süreci başlattıktan sonra kontrolünüz sınırlıdır. Süreci tekrar ön plana alamazsınız. Sadece PID ile takip edebilir veya sonlandırabilirsiniz.
Sürecin durumunu kontrol etmek için `ps aux | grep PID` veya `jobs` komutunu kullanabilirsiniz.

💻 Çözüm 2: screen (Güçlü ve Esnek)

`nohup` basit işler için idealdir, ancak daha fazla kontrole ihtiyacınız varsa (örneğin, süreçle tekrar etkileşime geçmek) `screen` (veya benzeri `tmux`) kesinlikle vazgeçilmezdir. Screen, birden fazla sanal terminal oturumu yaratmanıza, bunlar arasında geçiş yapmanıza ve oturumları askıya alıp daha sonra tekrar bağlanmanıza olanak tanır.

Öncelikle sisteminizde yüklü değilse kurun:

Bash:
# Debian/Ubuntu için
sudo apt-get install screen

# RHEL/CentOS için
sudo yum install screen

📝 Screen Temel Komutları

Yeni bir screen oturumu başlatmak:
Bash:
screen -S oturum_adi
Bu komut sizi yeni bir pencereye alır. Burada istediğiniz uzun komutu normal şekilde çalıştırın (örn: `python3 script.py`).

Oturumu askıya alıp çıkmak (arka planda çalışmaya devam eder): `Ctrl + A` tuş kombinasyonuna basın, ardından `D` tuşuna basın. (Detach)
Aktif screen oturumlarını listelemek:
Bash:
screen -ls
Askıdaki bir oturuma tekrar bağlanmak (reattach):
Bash:
screen -r oturum_adi
# veya sadece PID ile
screen -r 12345
Bir screen oturumunu tamamen sonlandırmak için: Oturumun içindeyken normal şekilde `exit` yazın veya `Ctrl + D` yapın.

✅ Hangi Durumda Hangisini Kullanmalı?

Benim sunucularda genelde şu kuralı uygularım:
nohup: Hızlı, tek seferlik, çıktısını log dosyasından takip edebileceğim ve tekrar etkileşime girmeme gerek olmayan işler için. Örn: Bir yedeği başlatmak, basit bir cron görevi denemek.
screen (veya tmux): Uzun sürecek, ara ara kontrol etmem veya çıktısını canlı görmem gereken, birden fazla komut çalıştıracağım işler için. Örn: Bir sunucuyu yükseltme (upgrade), log dosyasını canlı takip (tail -f), uzun süren bir derleme (compile) işlemi.

🔥 Bonus İpucu: tmux

Screen'in daha modern ve gelişmiş bir alternatifi `tmux`tur. Konfigürasyonu daha esnektir, pane bölme özellikleri daha güçlüdür. Alışınca bir daha bırakamazsınız. Kurmak için:

Bash:
# Debian/Ubuntu
sudo apt-get install tmux

# RHEL/CentOS
sudo yum install tmux

Temel kullanımı screen'e benzer: Yeni oturum `tmux new -s oturum_adi`, oturumdan ayrılma `Ctrl+B` ardından `D`, listeleme `tmux ls`, tekrar bağlanma `tmux attach -t oturum_adi`.

Umarım bu rehber, bağlantı kopması sorununu çözmenize yardımcı olur. Siz bu tarz uzun süreçleri yönetmek için hangi yöntemleri tercih ediyorsunuz? nohup, screen, tmux yoksa başka bir sihirli araç mı? Tecrübelerinizi ve sorularınızı aşağıdaki yorumlarda paylaşmayı unutmayın!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri