Ödeme Yöntemleri Abuse

Bir Linux hizmetinin otomatik olarak yeniden başlatılması nasıl gerçekleştirilir

26.02.2021, 20:42

Genellikle kendiliğinden hizmet çökmeleri olur. Kullanıcı manuel kurtarma ile uğraşmak zorundadır. Eğer bu bir ev bilgisayarında oluyorsa, böyle bir sorun yoktur. Daha da fazlası - bu iyidir, çünkü hizmetin durumunu belirlemek, hataları tespit etmek ve bunları ortadan kaldırmak için gerçek bir fırsat vardır. Ancak bir web sitesine veya uygulamaya erişim sağlamak için sürekli çalışması gereken sunucular ve VPS hizmetleri söz konusu olduğunda durum oldukça farklıdır. Bu makalede, Linux hizmetlerinin otomatik olarak yeniden başlatılmasını çeşitli şekillerde nasıl yapılandıracağımızı inceleyeceğiz: cron ve systemd aracılığıyla periyodik olarak çalıştırılan bir izleme betiği ile.

Systemd'de otomatik yeniden başlatma

Varsayılan ayar, Systemd'nin çökmesi durumunda hizmetle hiçbir şey yapmamasıdır. Ancak kullanıcı her zaman ayarları, hizmetin çökmesi veya durdurulması durumunda hizmetin otomatik olarak yeniden başlatılacağı şekilde yapılandırabilir. Bu amaçla, Servis bölümüne eklenmesi gereken Yeniden Başlat yönergesi kullanılır. Şimdi, Apache servisinin otomatik olarak yeniden başlatılmasını yapılandıran bir örneğe bakalım:

$ sudo systemctl edit apache2

[Service]

Restart=on-failure

RestartSec=5s

настройка автоматического перезапуска сервиса Apache:

Burada RestartSec, hizmeti yeniden başlatmadan önce ne kadar süre bekleneceğini belirtir. İşiniz bittiğinde, değişiklikleri kaydedin ve yapılandırmayı yeniden okumak için daemon-reload komutunu çalıştırın:

$ sudo systemctl daemon-reload

Ardından, her şeyin düzgün çalışıp çalışmadığını kontrol etmek için sürecin durumuna bakın, süreci bir kill sinyali ile sonlandırın:

 $ sudo systemctl status apache2

$ kill -KILL 32091

Процесс сигналом kill

Durumu tekrar kontrol edin, süreç çalışıyor olmalıdır. Başlatma işlemini her seferinde çalışacak şekilde ayarlamak için özel bir Restart: always yönergesi kullanın. Ancak bunu kullanırken çok dikkatli olmalısınız, çünkü gerekli olsa bile süreci sonlandırmanıza izin vermeyecektir. Süreç sürekli olarak çöküyorsa, yeniden başlatılması için, Hizmet bölümüne yeniden başlatma sayısına bir sınır ekleyebilirsiniz:

$ sudo systemctl edit apache2

[Service]

StartLimitIntervalSec=500

StartLimitBurst=5

Restart=on-failure

RestartSec=5s

Лимит на количество перезапусков в секцию Service

Burada StartLimitBurst ve StartLimitIntervalSec, hizmetin beş kez yeniden başlatılmasının ve bu beş kez de çökerse, onu kendi haline bırakmanın ve dokunmamanın önemini belirtir. İkinci yönerge hizmet yeniden başlatmalarını 500 saniye ile sınırlar.

Komut dosyası tarafından otomatik yeniden başlatma

Bu muhtemelen Linux'un tüm sürümlerinde çalışan en güvenilir ve hatasız yöntemdir. Apache'de bir betik kullanarak otomatik yeniden başlatma oluşturmak kolaydır. Bunu yapmak için şu komutu girmeniz gerekir:

$  sudo vi /usr/local/bin/apache-monitor.sh

#!/bin/bash

ps -A | grep apache2 || systemctl start apache2

Dosyayı kaydedin ve çalıştırılabilir hale getirdiğinizden emin olun:

chmod ugo+x /usr/local/bin/apache-monitor.sh

Betiği periyodik olarak çalıştırmak için bir cron girdisi eklemeyi unutmayın:

$ sudo crontab -e

*/5 * * * * /usr/local/bin/apache-monitor.sh

İşte bu kadar. Evet, hizmetin otomatik olarak yeniden başlatılmasını ayarlamak ilk bakışta göründüğü kadar kolay değildir. Ancak bu önemli bir yetenektir, bu yüzden buna dikkat etmelisiniz - kesinlikle buna değer.