Linux’ta, bir web sunucusu veya veritabanı gibi önemli programların sorunsuz çalışmasını sağlamak için hizmetler kullanırız. Ancak bazen bu hizmetler hatalar, çökmeler veya sistem sorunları nedeniyle başarısız olur. Bu olduğunda, her seferinde oturup manuel olarak yeniden başlatmak istemezsiniz – bu çaba ve zaman kaybıdır. Otomasyonun kullanışlı olduğu yer burasıdır. Günümüzde Linux sistemlerinde çok yaygın olan systemd gibi araçlarla, hizmetlerinizin çalışmayı durdurması durumunda kendi kendine yeniden başlatılmasını sağlayabilirsiniz. Bu, sürekli kontrol etmenize gerek kalmadan her şeyin çalışmasını sağlar.
Systemd, Linux’taki hizmetler için bir yönetici gibidir. Nasıl başladıklarını, durduklarını ve davrandıklarını kontrol eder. Ubuntu, CentOS veya Debian gibi çoğu modern Linux sürümü varsayılan olarak systemd kullanır. Bu makalede, başarısız olursa otomatik olarak yeniden başlatılacak bir systemd hizmetini nasıl ayarlayacağınızı göstereceğim. Bu, özellikle sunucuları veya önemli uygulamaları yönetiyorsanız, çok fazla baş ağrısından kurtaran basit bir numaradır. Kolay bir dille adım adım nasıl yapılacağını görelim.
Başlamadan önce neye ihtiyacınız var?
Başlamadan önce, systemd ile bir Linux sistemi kullandığınızdan emin olun. Bunu terminalinize systemctl yazarak kontrol edebilirsiniz. Eğer işe yararsa, gitmekte fayda var! Ayrıca, düzeltmek istediğiniz hizmetin adını da bilmelisiniz – bir web sunucusu için nginx veya bir veritabanı için mysql gibi. Son olarak, sistem dosyalarını düzenleyeceğimiz için root veya sudo erişimine ihtiyacınız var. Merak etmeyin, basit tutacağım ve her şeyi açıklayacağım.
1. Adım: Hizmet Dosyanızı Bulun
Her systemd hizmetinin, ne yapması gerektiğini söyleyen bir dosyası vardır. Bu dosyalar genellikle /etc/systemd/system/ veya /lib/systemd/system/ dizinindedir. Örneğin, nginx hizmetiyle çalışıyorsanız, dosya nginx.service olarak adlandırılabilir. Bulmak için terminalinize şunu yazın:
sudo systemctl status nginx
Bu size hizmet dosyasının nerede olduğunu gösterir. Göremiyorsanız, aşağıdakilerle arayın:
find / -name nginx.service 2>/dev/null
Dosyayı öğrendikten sonra, yeniden başlatma büyüsünü eklemek için düzenleyeceğiz.
2. Adım: Hizmet Dosyasını Düzenleyin
Şimdi, servis dosyasını nano veya vim gibi bir metin düzenleyici ile açın. Kolay olduğu için nano kullanalım. Tür:
sudo nano /etc/systemd/system/nginx.service
Dosyanın içinde [Birim], [Servis] ve [Yükle] gibi bölümler göreceksiniz. [Servis] kısmına odaklanmamız gerekiyor. Bu iki satırı oraya ekleyin:
Ne demek istiyorlar? Restart=systemd’ye, nedeni ne olursa olsun, başarısız olursa hizmeti yeniden başlatmaya devam etmesini her zaman söyler. RestartSec=5, yeniden denemeden önce 5 saniye bekleyin diyor. İsterseniz saniyeyi 10 veya 15 gibi değiştirebilirsiniz. Ctrl+O ve ardından Enter tuşlarına basarak dosyayı kaydedin ve Ctrl+X ile çıkın.
3. Adım: Yeniden Yükleyin ve Test Edin
Düzenledikten sonra, systemd’ye şu komutla kendini güncellemesini söyleyin:
sudo systemctl daemon-reload
Şimdi, değişiklikleri uygulamak için hizmetinizi yeniden başlatın:
sudo systemctl restart nginx
Otomatik yeniden başlatmanın çalışıp çalışmadığını test etmek için hizmetin başarısız olduğunu varsaymamız gerekir. Kolay bir yol, hizmetin işlem kimliğini (PID) bulmak ve öldürmektir. İlk olarak, PID’yi aşağıdakilerle kontrol edin:
sudo systemctl status nginx
Ana PID gibi bir sayı arayın: 281896 (nginx). Ardından, onunla öldürün:
sudo kill -9 281896
Birkaç saniye bekleyin (ayarladığınız RestartSec süresi gibi), ardından durumu tekrar kontrol edin:
sudo systemctl status nginx
Yeni bir PID ile tekrar çalışıyorsa, harika! Hizmetiniz artık başarısız olduğunda kendi kendine yeniden başlatılacak şekilde ayarlanmıştır.
Bu Neden Önemli?
Otomatik yeniden başlatmayı ayarlamak, Linux sunucuları çalıştıran herkes için büyük bir yardımcıdır. Web sitenizin bir çökme nedeniyle gece çöktüğünü ve sabaha kadar kimsenin fark etmediğini hayal edin. Bu hile ile hizmet saniyeler içinde yeniden başlar ve siteniz çalışır durumda kalır. Bu sadece profesyoneller için değil, Linux öğreniyor veya küçük bir proje yürütüyor olsanız bile, bu işleri sorunsuz tutar.
Yazının orijnalini buradan okuyabilirsiniz.