systemd-run vs nohup: Geçici görevler için hangisi daha güvenli

Anket

Geçici görevleri arka planda çalıştırırken siz hangi aracı tercih edersiniz?

0 oy

Geçici bir işi arka planda çalıştırmak gerektiğinde çoğu Linux kullanıcısı nohup'u tercih eder. Basit, hızlı, her yerde var. Ama eğer sistem yöneticisi veya biraz daha kontrollü bir ortamda çalışıyorsanız, systemd-run çok daha güvenli bir seçimdir.

Nohup, 1970'lerden kalma bir araç. SSH bağlantısı koptuğunda işi öldürmesin diye SIGHUP sinyalini yok sayar, çıktıyı nohup.out dosyasına yönlendirir. Basit işler için yeterli ama kontrol mekanizması yoktur. Kaç tane nohup işi çalışıyor, kaynak tüketimi ne, sınırlandırılmış mı, hiçbir fikir yoktur. Uzun süren bir işi nohup'la başlatıp unutursanız, sistem kaynakları tükenene kadar çalışabilir.

systemd-run ise baştan beri güvenlik ve yönetim için tasarlanmıştır. Bir işi başlattığınızda onu bir systemd scope veya service içine alır. Bu demek oluyor ki işin hafızası, CPU kullanımı, açık dosya sayısı, hepsi izlenebilir ve sınırlandırılabilir. Örneğin systemd-run --scope -p MemoryLimit=512M./uzun_islem komutu işi 512 MB hafızayla sınırlandırır. Limit aşarsa otomatik öldürülür. Nohup'ta bunu yapamayız.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Güvenlik açısından da fark vardır. systemd-run, işi belirli bir kullanıcı, grup ve cgroup (kontrol grubu) içinde çalıştırır. Dinamik kullanıcılar (DynamicUser=yes) oluşturabilir, işin ağ erişimini kısıtlayabilir, sistem çağrılarını filtreleyebilirsiniz. Nohup'ta işin ne kadar ayrıcalığı olduğu, hangi kaynaklara erişebildiği tamamen açık kalır.

Ancak nohup'un bir avantajı vardır: evrensellik. Minimal sistemlerde, containerlar içinde, eski sistemlerde nohup her zaman vardır. systemd-run'ı kullanmak, o sistemin systemd'ye bağımlı olduğu anlamına gelir. Eğer systemd olmayan bir ortamda çalışıyorsanız (musl libc tabanlı Alpine, OpenRC kullanan Gentoo), nohup tercih edilebilir.

Yargı: Eğer üretim ortamında, sunucuda, kontrol gereken bir işi çalıştırıyorsanız systemd-run kullanın. Kaynak sınırlarını belirleyin, izleme yapın. Eğer hızlı bir test, geçici bir script, minimal bir ortamda çalışıyorsanız nohup yeterlidir. Ama sistemin tamamında kontrol istiyorsanız, systemd-run'ın disiplini kaçınılmazdır.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz