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şlatBirden ç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ınDiğ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 / sistemFarklı 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.serviceBurada ş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.