Ssh hariç tüm hizmetleri devre dışı bırak


31

Modern (sistem tabanlı) linux dağıtımları için ssh dışındaki tüm hizmetleri nasıl devre dışı bırakabilirim?

Bir bakım modu uygulamam gerekiyor .

Tüm bu hizmetlerin kapalı olması gerekiyor:

  • postgres
  • postfix
  • apache
  • bardaklar
  • cron
  • güvercinlik

Ancak, ssh kapatılmamalıdır, çünkü bu bakım modu sırasında görev yapmak için kullanılır.

Tabii ki devre dışı bırakmak istediğim hizmetlerin listesini çevreleyen bir kabuk betiği yazabilirim. Ama bu zaten var olan, ama şu ana kadar bilmediğim bir şeyi yeniden icat ediyormuşum gibi geliyor.


1
Ne tür görevler? Niçin buna ihtiyacın var?
Kasım’da

@ user430214 Soruyu güncelledim. Ekledim: Tabii ki devre dışı bırakmak istediğim hizmetlerin listesine giren bir kabuk betiği yazabilirim. Ama bu zaten var olan, ama şu ana kadar bilmediğim bir şeyi yeniden icat ediyormuşum gibi geliyor.
guettli

Yanıtlar:


55

Bu , Systemd'deki hedeflerle değiştirilen çalışma seviyelerine çok benziyor . Bu nedenle, bir hizmet listesini başlatan ve durduran bir komut dosyası yazmak yerine, yalnızca SSH gibi gerekli hizmetleri içeren yeni bir tane oluşturabilirsiniz . Tabii ki, SSH ağ bağlantısı olmadan pek kullanışlı değildir, bu nedenle bu örnekte SSH içerecek şekilde basit bir değişiklik yapılmıştır.maintenance.targetemergency-net.target

[Unit]
Description=Maintenance Mode with Networking and SSH
Requires=maintenance.target systemd-networkd.service sshd.service
After=maintenance.target systemd-networkd.service sshd.service
AllowIsolate=yes

Ardından, bakım modunu kullanarak

# systemctl isolate maintenance.target

ve geri

# systemctl isolate multi-user.target

1
Bu cevap için çok teşekkür ederim. Kirli bir kabuk betiği yazmak dışında hoş bir cevap olmadığını düşünüyorsan bile, bana sormanın faydalı olduğunu gösteriyor. Emergency-net.target basit ve şık bir çözümdür - harika :-)
guettli

Kesinlikle, tüm bağımlılıklarla da ilgilendiği için ve her yeni bir servis yüklediğinizde betiğinizi güncellemeniz gerekmez.
Esa Jokinen

3

İlk önce servislerinizi listeleyin ve karşılık gelen sistem adları için arama yapın.

Ardından bir liste oluşturun ve her üyeye bakıma son verin, bakımdan sonra her üyeye başlayın.


5
Neden sadece kullanmıyorsun systemctl isolate?
Chris Down,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.