systemctl restart Komutunu kullanarak bir Hizmeti yeniden başlatın

Systemctl Restart Komutunu Kullanarak Bir Hizmeti Yeniden Baslatin



sistemd Linux'ta yaygın olarak kullanılan bir sistem servis yöneticisidir. Yönetmek sistemd hizmetler, sistemctl komut satırı yardımcı programı kullanılır. Bu araç aynı zamanda herhangi bir systemd hizmetini yeniden başlatmak için de kullanılır.

Linux'taki hizmetler, yapılandırma dosyaları aracılığıyla yönetilir. Bir hizmetin yapılandırma dosyasında değişiklik yapılırsa, değişikliklerin uygulanması için hizmetin yeniden başlatılması gerekir. Hizmeti yeniden başlattıktan sonra sistem yapılandırma dosyasını yeniden değerlendirir ve değişiklikleri uygular.

Bu kılavuzda, Linux'ta bir hizmeti yeniden başlatmak için systemctl'nin nasıl kullanılacağını anlatacağım.







Not: Bu kılavuz, Ubuntu 22.04'te yürütülen komutları ve talimatları içerir. Komut, systemd hizmet yöneticisiyle birlikte gelen dağıtımlarda herhangi bir sorun olmadan çalışacaktır.



Systemctl yeniden başlatma Komutu

tekrar başlat komut aslında bir hizmeti durdurur ve yeniden başlatır. Servis veya ünite çalışır durumda değilse, yeniden başlatma komutu çalışmasını başlatacaktır.



Yeniden başlatma komutu, hizmete bağlı işlemleri kaldırmaz. İşletim sistemi tarafından bir hizmet tarafından açılan dosyalara atanan negatif olmayan tanımlayıcılar olan dosya tanımlayıcıları örneğini ele alalım. Bir hizmeti yeniden başlatırsanız, o hizmete bağlı dosya tanımlayıcı yeniden başlatma işlemi sırasında orada kalacaktır.





Bağlantılı tüm süreçleri hizmete aktarmak istiyorsanız, bunu açıkça yapmanız gerekir. durmak hizmet ve başlangıç tekrar dene.

Bir Hizmet Nasıl Yeniden Başlatılır

Linux'ta, bir hizmeti kullanarak yeniden başlatabilirsiniz. sudo sistemictl komut satırı aracı ile tekrar başlat seçeneğini belirleyin ve adını belirtin. Genel sözdizimi aşağıda verilmiştir:



sudo systemctl yeniden başlat [ hizmet adı ]

İhtiyacın olacak sudo Bir hizmeti yeniden başlatma ayrıcalıkları.

Örneğin, yeniden başlatalım ssh hizmet.

sudo systemctl ssh.service'i yeniden başlat

Birden çok hizmeti yeniden başlatmak için her hizmet adını, tekrar başlat boşluk ile komut verin.

sudo systemctl ssh.service smbd.service'i yeniden başlatın

Diğer yeniden başlatma komutları aşağıdaki tabloda verilmiştir:

yeniden başlatmayı dene Belirtilen hizmeti veya hizmetleri durdurur veya başlatır ve hizmet çalışmıyorsa başlatmaz.
yeniden yükle veya yeniden başlat Desteklenen hizmeti veya hizmetleri yeniden yükleyin ve hizmet desteklenmiyorsa yeniden başlatın ve etkinleştirin
yeniden yüklemeyi veya yeniden başlatmayı deneyin Desteklenen hizmeti veya hizmetleri yeniden yükleyin ve hizmet desteklenmiyorsa etkinleştirmeden yeniden başlatın.

Yukarıdaki komutlarda, .hizmet uzatma isteğe bağlıdır.

Bir Hizmet Otomatik Olarak Nasıl Yeniden Başlatılır

Linux'ta bir hizmet başarısız olursa, o zaman sistemd varsayılan olarak yeniden başlattı. Bununla birlikte çoğu durumda hizmetin yeniden başlatılma şeklini değiştirmek gerekebilir. Örneğin, özel yapım hizmetin hata ayıklama işlemi sırasında manuel işlem yapılması gerekebilir.

Systemd birim dosyaları veya hizmet dosyaları şurada bulunur: /etc/systemd/system veya /lib/systemd/system esas olarak hizmetin nasıl oluşturulduğuna bağlıdır. Birim dosyalarını Linux'ta listelemek için aşağıdaki komutu kullanın:

ls / kitap / sistemd / sistem

Farklı hizmetlerin yapılandırma dosyalarını görebilirsiniz. Hadi açalım ssh.service kullanarak dosya nano editör.

sudo nano / kitap / sistemd / sistem / ssh.service

Burada şunları değiştirebilirsiniz: Tekrar başlat ayar. Varsayılan olarak şu şekilde ayarlanmıştır: arıza durumunda . Bir hizmeti yeniden başlatmak için diğer seçenekler aşağıda listelenmiştir:

  • HAYIR
  • Her zaman
  • başarı üzerine
  • arıza durumunda
  • anormal
  • iptal sırasında
  • bekçi köpeği

Birim hizmet dosyasındaki diğer bir seçenek ise Yeniden Başlatma Saniyesi hizmetin kaç saniye sonra yeniden başlatılacağını belirtmek için kullanılır.

[ Hizmet ]

Tekrar başlat =her zaman

Yeniden Başlatma Saniyesi = 5

Bu talimatlar, hizmetin önyükleme sırasında yeniden başlatılacağı ve kesintiye uğraması durumunda 5 saniye sonra yeniden başlatılacağı anlamına gelir.

Ayarı değiştirdikten sonra değişiklikleri uygulamak için aşağıdaki komutu uygulayın.

sudo systemctl yeniden yükleme programı

Dikkate alınması gereken diğer önemli ayarlar şunlardır: StartLimitIntervalSec Ve StartLimitBurst . Bu seçenekler, bir hizmeti yeniden başlatmak için maksimum süreyi ve maksimum yeniden deneme sayısını ayarlamak için kullanışlıdır.

[ Birim ]

StartLimitIntervalSec = 300

StartLimitBurst = 4

Yukarıdaki talimat, 300 saniye ve 4 yeniden denemeden sonra başlamazsa systemd'nin bir hizmeti yeniden başlatmayı denemeyi otomatik olarak durduracağını gösterir.

Hizmetin 5 saniye sonra yeniden başlatılıp başlatılmadığını doğrulamak için, hizmetin PID'sini ve öldürmek emretmek.

sudo öldürmek -9 [ PID ]

5 saniye sonra hizmet yeniden başlatılacaktır; kullan günlükctl durumunu kontrol etme komutu ssh.service .

günlükctl -içinde ssh.service

Bağımlı Hizmet Yeniden Başlatıldığında Hizmet Nasıl Yeniden Başlatılır

Linux'ta birçok hizmet birbirine bağımlıdır ve benzer şekilde, bağımlı bir hizmet yeniden başlatıldığında bunların da yeniden başlatılması gerekir.

Birim hizmet dosyasında, bağımlı bir hizmetin yeniden başlatılmasıyla bir hizmeti yeniden başlatmak için üç farklı seçenek vardır.

  • Parçası
  • Bağlanır
  • Gereklilikler

Bu seçeneklerin tümü aynı görevi yerine getirir.

Apparmor.service'e bağlı olan ssh.service örneğini ele alalım; Gerekli erişimi sağlamak için bir Linux Güvenlik Modülü. Linux kullanımında bir hizmetin bağımlılıklarını listelemek için sistemctl ile liste bağımlılıkları komut ve hizmet adı.

systemctl liste bağımlılıkları ssh.service

Dolayısıyla, apparmor.service'i yeniden başlattığınızda ssh.service'i de yeniden başlatmak istiyorsanız, apparmor.service dosyasının [Unit] bölümüne hizmet adıyla birlikte PartOf, BindsTo veya Requires seçeneğini eklemeniz gerekir.

Apparmor.service dosyasını açın.

sudo nano / kitap / sistemd / sistem / apparmor.service

[Birim] bölümüne aşağıdaki satırı ekleyin.

Parçası =ssh.hizmeti

Dosyayı kaydedin ve daemon-reload komutunu çalıştırın.

sudo systemctl arka plan programı-yeniden yükleme

Şimdi yeniden başlat ssh.service ve ardından şunu kontrol edin: apparmor.service kayıt.

fark edeceksiniz apparmor.service aynı anda yeniden başlatıldı ssh.service yeniden başlatıldı.

Çözüm

Linux'ta bir hizmeti veya hizmetleri yeniden başlatmak için, sistemctl komutu ile kullanılır tekrar başlat seçenek. sistemctl systemd hizmetlerini yönetmek için kullanılan bir komut satırı yardımcı programıdır. tekrar başlat seçeneği bir hizmeti başlatır ve ardından durdurarak etkin olmayan bir hizmeti etkinleştirir. Ancak, bir hizmeti etkinleştirmeden şunu kullanarak yeniden başlatabilirsiniz: yeniden başlatmayı dene seçenek.