Systemd hizmetleri nasıl kaldırılır


179

Eğer yeni bir servis kurarsam, o zaman artık bu uygulamayı istemediğime karar verip onu silersem, servis hala çıktıda hatasystemctl olarak listelenir .

Bu nereden geliyor ve bunları nasıl tamamen kaldırabilirim?

Yanıtlar:


290

Hizmet yok etme tarifim ( rmaçıklamalara dikkat edin !)

systemctl stop [servicename]
systemctl disable [servicename]
rm /etc/systemd/system/[servicename]
rm /etc/systemd/system/[servicename] symlinks that might be related
systemctl daemon-reload
systemctl reset-failed

Systemd hizmetinin eski stil komut dosyalarını /etc/init.d içinde 'sararması' mümkündür, bu nedenle onu da temizlemek isteyebilirsiniz, ancak sistemd hizmetlerinin yaşadığı yer bu değildir .


7
Özellikle /usr/lib/systemd/systemve ayrıca Systemd birim dosyalarının saklandığı birden fazla konum bulunduğunu unutmayın /etc/systemd/system/. Başvuru için bakınız: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…
Mark Edington

6
Ayrıca /etc/init.d/[servicename]çalıştırmadan önce çıkarmak zorunda kaldımsystemctl reset-failed
Andrea

4
Doğru, birim dosyalarını kaldırmadan önce devre dışı bırakmayı unuttum. BTW, kaldırılacak tüm birim dosyalarını bulmak için çıktılarını inceliyorum systemctl cat [servicename].
Amir

/Etc/init.d/ içinde "sarılmış" bir eski stil komut dosyası olabilir, ancak kaldırmadıysanız, kaldırmanızdan kalan hizmetler altında göründüğünü göreceksiniz. Sana bunun benim için geçerli olduğunu söyleyebilirim. Bunu daha eksiksiz hale getirmek için cevabınıza ekleyebilirsiniz, ancak umarım ihtiyacı olan bir sonraki kişi yorumlara bakacaktır.
Marlon

1
Bu işe yaradı, teşekkür ederim, ama neden bu çöpü el ile temizlemek için yapıldığından emin değilim.
Rolf

25

Muhtemelen arıyorsun reset-failed:

$ sudo systemctl reset-failed
$

Systemd man sayfasından:

reset-failed [PATTERN...]

Belirtilen birimlerin "başarısız" durumunu sıfırlayın veya birim adı geçilmezse, tüm birimlerin durumunu sıfırlayın. Bir ünite bir şekilde başarısız olduğunda (yani, sıfır olmayan hata koduyla çıkma, anormal şekilde sonlanma veya zaman aşımına uğrama), otomatik olarak "başarısız" durumuna girecek ve çıkış kodu ve durumu yönetici tarafından hizmete girene kadar otomatik olarak kaydedilecektir. bu komutla yeniden başlatılır veya sıfırlanır.


2
Sorunun istediği şey bu değil. Bu neden dünya üzerinde 17 kez artırıldı?
psusi

1
Bu tek doğru cevap. Daha fazla oy ve onay işaretine sahip olan diğer kişiler ise geçici çözümlerdir.
Thomas

1
Ben OP'ın soruyu okumadım, ama bu cevap oldu ben arıyordum.
Kuzen Kokain

23

Kaldırmış gibisiniz, ancak sistem kancasını çıkarmadı:

# systemctl disable [servicename]


4

@ Mark-lakata 'ın cevabını eklemek ve rmkomut için gereken özeni göz önünde bulundurmak . [chkconfig]işlemi basitleştirebilir! ( chkconfig hakkında okumak için buraya tıklayın )

Komut listesini tekrarlamak için:

  1. systemctl stop [servicename]
  2. chkconfig [servicename] off
  3. systemctl daemon-reload
  4. systemctl reset-failed

Not: Hizmeti şu anki oturumda çalışır durumda tutmak isteyip istemediğinize bağlı olarak isteğe bağlı bir komuttur (bu soru için komut kullanılmalıdır).

2. komut, hizmeti devre dışı bırakma ve kaldırma (simgeleri izleyerek) ile ilgilenir.


1
chkconfigSysVinit servislerini etkinleştirmek / devre dışı bırakmak için kullanılan asıl komut buydu. Kullanılan sistemlerde systemd, geriye dönük uyumluluk komutu olarak bulunabilir; ancak yerel systemctlkomut basittir:systemctl disable [servicename]
telcoM

1
Tamam, ama bu komutu kullanmamın nedeni, açıkça rm komutunu çalıştırmak zorunda değilsin
garlicFrancium

1

Bir hizmeti sistemden kaldırma:

Systemd, birimin kaldırılması gereken bir servisi kaldırmak için birim (hizmetleri tanımlamak için dosya kullanır) ... işte birim konumlarının listesi:

/etc/systemd/system/ (and sub directories)
/usr/local/etc/systemd/system/ (and sub directories)
~/.config/systemd/user/ (and sub directories)
/usr/lib/systemd/ (and sub directories)
/usr/local/lib/systemd/ (and sub directories)
/etc/init.d/ (Converted old service system)

Sistemi yenile:

systemctl daemon-reload
systemctl reset-failed

Hayalet hizmetleri (bulunamadı):

Sistem bir çok nedenden dolayı silinmiş olsa bile hayalet (bulunmayan) hizmetleri listeleyebilir

  1. birim sistemd dizinlerinden birinde hala var
  2. birim çıkmıyor, ancak systemd dizininden birinde hala bir dosya bağlantısı var
  3. Servis diğer birimlerde kullanılır *

(*) başka bir birimde bir hizmetten bahsedilmiş ancak sistemde mevcut değilse, sistemd, birim dosya olmasa bile bu hizmeti bulunmayan durumla birlikte listeleyecektir ... bir servisi metin arama ile kullanmakta olan hangi birimi arayabilirsiniz ve bu birimleri düzenleyin (bu servisi daha sonra kurmayı planlıyorsanız önerilmez)

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.