Bir Linux geliştiricisiyseniz, oturumlarınızın tutarlı ve güvenilir olmasının ne kadar önemli olduğunu bilirsiniz. Linux'de uzun süre çalışan süreçlerin, oturumunuzu kapattıktan sonra da devam etmesi gerekir. Neyse ki Linux'nin bu amaç için kullanışlı bir komutu vardır. nohup komutu komutları arka planda kesintisiz çalışmaya devam ettirmenizi sağlar. Bu sayede veri kaybını önler ve zaman kazandırır. Bu kılavuz, Linux nohup komutunu sözdiziminden seçeneklere, pratik örneklerden sık karşılaşılan hatalara kadar her yönüyle ele almaktadır.
Linux nohup Sözdizimini Anlamak
nohup komutu kullanımı kolay ve sezgiseldir. Komutları veya betikleri arka planda çalıştırmanıza olanak tanır; böylece terminalden çıkış yapsanız bile çalışmaya devam ettiklerinden emin olursunuz. Kullanımı şu şekildedir:
nohup [command] [arguments] &
Yerine [command] çalıştırmak istediğiniz komut veya betiği yazın. [argument] ise komutun gerektirdiği bağımsız değişkenler veya seçeneklerdir. & sembolü komutu arka planda çalıştırır. Bir örneğe bakalım:
nohup myscript.sh &
Bu örnekte, myscript.sh terminalini kapatsanız bile çalışmaya devam edecek bir bash betiğidir. Çıktı, başka bir yol belirtmediğiniz sürece varsayılan olarak nohup.out adlı bir dosyaya yönlendirilir.
nohup Seçenekleri
nohup komutunun kendisi çok fazla seçenek sunmasa da çeşitli komutlar ve yönlendirme teknikleriyle etkili biçimde kullanmayı öğrenmek performansını artırır. Önce nohup komutu hakkında bilgi almak için şu yöntemlere bakalım:
nohup –-help nohup --version
Bu iki komut, nohup'ın yardım mesajını ve sürüm bilgisini göstererek işe yarar bilgiler sunar.
nohup Komutuyla Bir Süreç Çalıştırma
nohup komutuyla bir süreç çalıştırmak için bir önceki bölümde anlattığım yapının aynısını kullanabilirsiniz:
nohup [command]
Bir işlemi arka planda çalıştırmak istiyorsanız, komutunuzun sonuna & ifadesini eklemeniz yeterlidir.
nohup Komutuyla Arka Planda Birden Fazla Süreç Çalıştırma
Peki, nohup komutunu kullanarak birden fazla işlemi arka planda çalıştırmak istiyorsanız ne yapmalısınız?
nohup bash -c '[command A] && [command B]' &
Değiştir [command A] ve [command B] ifadesini, arka planda çalıştırmak istediğiniz komutlarla birlikte kullanın. Örneğin, önce sistem paketlerinizi güncellemek, ardından gereksiz dosyaları temizlemek ve bunu nohup komutuyla yapmak istediğinizi varsayalım:
nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &
Bu örnekte, nohup ifadesi, güncelleme ve temizleme işlemlerinin her ikisinin de arka planda çalışmaya devam etmesini sağlar. Böylece terminal açık kalmak zorunda olmadan sistem bakım görevleriniz tamamlanır.
Özel Çıktıyı Yönlendirme
Bu işlemin çıktısı varsayılan olarak nohup.out konumuna yönlendirilir. Peki çıktıyı farklı bir konuma almak istiyorsanız bunu şu şekilde yapabilirsiniz:
nohup [command] > [/path/to/new/output.txt]
içindeki değerleri, [] istediğiniz komut ve dosya yoluyla değiştirmeyi unutmayın.
nohup'ı Diğer Komutlarla Birlikte Kullanma
nohup, güçlü komut zincirleri oluşturmak için diğer komutlar ve pipe'larla birlikte kullanılabilir. Bir örneğe bakalım:
nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &
Burada, the bul komutu log dosyalarını aramak için, grep ise "ERROR" terimini aramak için kullanılır. Birleştirilen çıktı şu konuma yönlendirilir: error_logs.txt.
Bu bölümde nohup komutunun en yaygın seçeneklerini ve kullanım senaryolarını ele aldık. Bu komutlara hakim olarak, nohup'ı arka planda işlem çalıştırmak için etkin biçimde kullanabilirsiniz.
Sık Karşılaşılan Hatalar ve Sorun Giderme
nohup komutunu kullanmak genellikle oldukça basittir; ancak süreç içinde bazı yaygın hatalarla karşılaşabilirsiniz. Bu hataları anlamak ve nasıl giderileceğini bilmek, zaman kaybını ve hayal kırıklığını önler. Şimdi bu yaygın hataların neler olduğuna ve nasıl çözüleceğine bakalım:
İzin Reddedildi
Bu hata, çalıştırmaya çalıştığınız betik veya komutun çalıştırma iznine sahip olmaması durumunda ortaya çıkar. Hata çıktısı şu şekilde görünür: nohup: failed to run command 'myscript.sh': Permission denied
Bu sorunu çözmek için betik veya komutun doğru izinlere sahip olduğundan emin olmanız gerekir. Çalıştırma iznini şu komutla ekleyebilirsiniz: chmod komut:
chmod +x myscript.sh nohup ./myscript.sh &
Komut Bulunamadı
Bu hata, komut veya betiğin belirtilen konumda bulunmaması ya da PATH'inizde mevcut olmaması durumunda ortaya çıkar. Hata çıktısı şu şekilde görünür: nohup: failed to run command 'myscript.sh': No such file or directory
Bu hatayı gidermek için komut veya betiğin doğru dizinde var olduğunu doğrulamanız gerekir. Betiğe mutlak yol belirtmeniz gerekebilir:
nohup /path/to/myscript.sh &
Ayrıca komutun kurulu olduğundan ve PATH'inizde erişilebilir durumda olduğundan emin olun.
Çıktı Yok
Zaman zaman terminalde veya çıktı dosyasında hiçbir çıktı göremeyebilirsiniz. Komut çıktı üretiyor ancak siz göremiyorsanız, çıktı varsayılan dosya yerine farklı bir konuma yönlendiriliyor olabilir ya da dosya izinlerinde bir sorun olabilir. Bu durumu aşmak için çıktı dosyasını açıkça belirtip doğru konuma yönlendirildiğinden emin olun:
nohup myscript.sh > output.log 2>&1 &
Örneğin bu komut, hem standart çıktıyı hem de standart hatayı şu adlı bir dosyaya yönlendirir: output.log.
Betik Arka Planda Çalışmıyor
Bazen betiğiniz veya komutunuz çalışıyor görünür, ancak arka planda değildir. Bunun nedeni genellikle basittir: komutu arka planda çalıştırmak için sonuna & sembolünü eklemeyi unutmuş olabilirsiniz. Çözümü de bir o kadar basittir; bunu eklediğinizden emin olun ve her şey yoluna girer.
Askıda Kalan veya Yanıt Vermeyen Süreç
nohup ile başlatılan bir işlem askıya alınabilir veya yanıt vermez hale gelebilir. Bu durum, işlem girdi bekliyorsa ya da erişmeye çalıştığı kaynaklarda sorun varsa ortaya çıkabilir. Bu sorunun iki çözümü vardır:
- Gerekli Girdiyi Kontrol Edin: Komutun herhangi bir etkileşimli girdi gerektirmediğinden emin olun.
- Kaynak Sorunları: Komutun gerekli kaynaklara (örneğin dosyalar, ağ) erişebildiğini doğrulayın.
nohup.out Dosyasının Üzerine Yazma
nohup komutuyla arka planda birden fazla işlem çalıştırıyorsanız, farkında olmadan nohup.out dosyasının üzerine yazabilirsiniz. Bu sorunu önlemek için her işlem için ayrı bir çıktı yolu belirleyebilirsiniz. Böylece her işlemin kendine özgü bir çıktı dosyası olur ve varsayılan yolun üzerine yazılmaz.
Yaygın nohup hatalarını ve çözümlerini öğrenerek nohup komutunu sorunsuz biçimde kullanabilirsiniz.
Sonuç
nohup komutu, işlemleri arka planda çalıştırması gereken her Linux kullanıcısı için işe yarar bir araçtır; oturumu kapattıktan sonra bile işlemlerinizin çalışmaya devam etmesini sağlar. Bu kılavuzda temel sözdizimini ele aldık, çeşitli seçenekleri inceledik ve sık karşılaşılan hataları çözüm önerileriyle birlikte açıkladık. nohup komutuna hakim olmak, uzun süren görevleri verimli şekilde yönetmenizi, üretkenliğinizi ve sistem yönetimi becerilerinizi geliştirmenizi sağlar.
Linux deneyiminizi en üst düzeye çıkarmak isteyen bir Linux geliştiricisiyseniz, güvenilir bir Linux VPS'e geçmeyi düşünebilirsiniz. Bulut tabanlı VPS hizmetimiz 7/24 destek ve %99,95 çalışma süresi garantisi sunar; bu da uygulamalarınızın her zaman sorunsuz çalıştığı ve günün her saatinde yardım alabildiğiniz anlamına gelir. Güçlü altyapısı ve güvenilir kaynaklarıyla VPS'miz, Linux geliştiricilerinin ihtiyaçlarını karşılayacak şekilde tasarlanmıştır. Üstelik tercih ettiğiniz Linux dağıtımı önceden yüklenmiş olarak gelir; kurulumu hızlı ve kolay hale getirir. Linux projelerinizi, ihtiyacınız olan gücü ve esnekliği sunan bir VPS ile bir üst seviyeye taşıyın.
SSS
Arasındaki fark nedir: nohup ve &?
nohup kullanıcı oturumu kapattığında bir işlemin sonlandırılmasını engellerken, & bir işlemi arka planda çalıştırır. nohup kullanımı, işlemin oturum kapatıldıktan sonra da çalışmaya devam etmesini sağlar; buna & eklenmesi ise işlemin arka planda çalışmasına olanak tanır.
nohup neden kullanılır?
nohup bir komutun veya betiğin, kullanıcı oturumu kapattıktan ya da terminal kapatıldıktan sonra bile çalışmaya devam etmesini sağlamak için kullanılır. Kullanıcı müdahalesi olmadan aktif kalması gereken uzun süreli işlemler için vazgeçilmezdir.
nohup out dosyası nedir?
Bu nohup.out dosyası, nohup'ın bir komutun standart çıktısını ve standart hatasını yönlendirdiği varsayılan çıktı dosyasıdır. Başka bir çıktı dosyası belirtilmezse komutun çıktısı şuraya kaydedilir: nohup.out geçerli dizinde.