Eksik sistem birimleri nasıl kaldırılır?


40

Artık dosyaları olmayan sistem ve birimleri nasıl çıkartacağımı bulmakta sorun yaşıyorum. Hala bir şekilde sistemde oyalanıyor gibi görünüyorlar.

Eski kırık birimleri kaldırmaya çalışıyorum:

core@ip-172-16-32-83 ~ $ systemctl list-units --all firehose-router*
  UNIT                       LOAD      ACTIVE SUB    DESCRIPTION
<E2><97><8F> firehose-router@02.service not-found failed failed firehose-router@02.service
<E2><97><8F> firehose-router@03.service not-found failed failed firehose-router@03.service

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

2 loaded units listed.
To show all installed unit files use 'systemctl list-unit-files'.

Dosyalar mevcut değil, ancak bir yeniden yükleme işleminde hala bu üniteler var:

core@ip-172-16-32-83 ~ $ systemctl list-unit-files firehose-router@02.service
core@ip-172-16-32-83 ~ $ sudo systemctl daemon-reload
core@ip-172-16-32-83 ~ $ systemctl list-units --all firehose-router*
  UNIT                       LOAD      ACTIVE SUB    DESCRIPTION
<E2><97><8F> firehose-router@02.service not-found failed failed firehose-router@02.service
<E2><97><8F> firehose-router@03.service not-found failed failed firehose-router@03.service

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

2 loaded units listed.
To show all installed unit files use 'systemctl list-unit-files'.

Onlarla ilgili bulabileceğim hiçbir dosya yok:

core@ip-172-16-32-83 ~ $ sudo find /var/run/systemd -name "*firehose-router*"
core@ip-172-16-32-83 ~ $ find /etc/systemd/ -name "*firehose-router*"
core@ip-172-16-32-83 ~ $ find /usr/lib/systemd/ -name "*firehose-router*"
core@ip-172-16-32-83 ~ $

Peki bunlardan nasıl kurtulurum?


Ondan bahsetmiyorsun ama sanırım systemctl disableonlara çalışırsan başarısız olur , değil mi?
dawud

2
Sadece 0 ile var. Devre dışı bırakılacak bir şey yok (zaten eksik / devre dışı).
Andy Shinn

Burada önerilen tüm çözümleri denedim (ve şimdiye kadar) ve yeniden başlattım ve hiçbir şey çalışmadı. Kaldırmaya çalıştığım üniteler bir zamanlar kuruldu ya da kurulmaya çalıştı ve daha sonra apt temizlendi. Dolayısıyla görünüşe göre uygun temizleme, sisteme verilen konfigürasyonu kaldırmaz. Bu "bulunamayan" birimlerin herhangi bir soruna neden olup olmadığı hala net değil.
Eliptik görünüm

/ Var / lib / systemd / deb-systemd-helper etkin / içerisindeki dosyaları silebileceğimi sanıyorum ama bununla uğraşmak isteyip istemediğimden emin değilim. Orada bilinen iki ölü ucu varmış gibi görünüyor: mariadb.service.dsh-also ve mysql.service.dsh-also
Eliptik görünüm

@Elipticalview Bu dosyaların yedeğini alın, her durumda ve sonrasında bunları kaldırın?
gf_

Yanıtlar:


74

Peşinde olduğunuz komut systemctl reset-failed


3
Teşekkür ederim! Bunun neden benim için daha açık olmadığını bilmiyorum ...
Andy Shinn

5
Bu nihayet "gerçek" bir servisin temizliği için işe yaradı, fakat kaçmayı reddeden bir takma hizmetim var. Denedim disable, daemon-reloadve reset-failedfakat takma servisi olarak çıkageldi not-found inactive deadhep. Ayrıca diski servis ismiyle eşleşen hiçbir sonuç için arama yaptım.
Mark Lakata

3
Ben sadece bu koştu ve systemctl stop <service>benim için çalıştı.
mpontillo

Aynısı zamanlayıcılar için de geçerlidir - reset-failedonları temizlemeden önce ilk önce durdurulmaları gerekir .
Rustyx

Benim için çalıştı, ama önce maskelemeliydim, sonra da biri için maskesini kaldırdım. Ayrıca, birini durdurarak maskelemek ve maskeyi kaldırmak zorunda kaldı, ardından sıfırlama işlemi başarısız oldu.
tgunr

2

Systemd birim tanım dosyalarını analiz ettiğinde, dosyada adı verilen ilgili birimlerin - bu diğer birimlerin var olup olmadığına dikkat eder.

$ systemctl --state=not-found --all
> ( ...prints list of 'not-found' units )

$ grep -r "<missing-unit>" /usr/lib/systemd/system
> ( returns files with references to <missing-unit> )

Bir birim "bulunamadı" olarak göründüğünde, mutlaka bir hata olmaz - tek bildiğimiz, yerel bir birim tanımının kendisiyle bir ilişki olduğunu iddia ettiğidir. Bu ilişki bizim umursadığımız bir ilişki olmayabilir. Örneğin, "Before:"başka bir birim olabilir, ancak o diğer birimi kullanmıyoruz.


0

Görünüşe göre systemd bağlantıları koruyor ancak birim dosyasını sildiğinizde onlarla ne yapacağını bilmiyor.

Bunları el ile kaldırmayı deneyebilirsiniz, /etc/systemd/system/suspend.target.wants/ancak elbette systemctl reset-failedönceki bir cevaptan daha iyi bir seçenek gibi geliyor.

$ cd /etc/systemd/system
$ sudo mv lock.service /tmp 
$ sudo systemctl disable lock.service
Failed to disable unit: No such file or directory
$ sudo mv /tmp/lock.service .
$ sudo systemctl disable lock.service
Removed /etc/systemd/system/suspend.target.wants/lock.service.
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.