Saya mengalami kesulitan mencari tahu cara menghapus unit systemd yang tidak lagi memiliki file. Mereka tampaknya masih tertinggal dalam sistem entah bagaimana.
Unit rusak lama yang saya coba hapus:
core@ip-172-16-32-83 ~ $ systemctl list-units --all firehose-router*
UNIT LOAD ACTIVE SUB DESCRIPTION
<E2><97><8F> [email protected] not-found failed failed [email protected]
<E2><97><8F> [email protected] not-found failed failed [email protected]
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'.
File tidak ada, namun reload masih memiliki unit-unit ini melekat:
core@ip-172-16-32-83 ~ $ systemctl list-unit-files [email protected]
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> [email protected] not-found failed failed [email protected]
<E2><97><8F> [email protected] not-found failed failed [email protected]
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'.
Tidak ada file yang terkait dengan mereka yang dapat saya temukan:
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 ~ $
Jadi, bagaimana saya menyingkirkan ini?
systemctl disable
, kan?Jawaban:
Perintah yang Anda cari adalah
systemctl reset-failed
sumber
disable
,daemon-reload
danreset-failed
tetapi layanan alias muncul sepertinot-found inactive dead
biasa. Saya juga mencari disk apa pun yang cocok dengan nama layanan tanpa hasil.systemctl stop <service>
bekerja untuk saya.reset-failed
dapat membersihkannya.Ketika systemd menganalisis file definisi unit, perlu dicatat setiap unit terkait lainnya yang dipanggil dalam file - apakah unit lain itu ada atau tidak.
Ketika sebuah unit muncul sebagai "tidak ditemukan", itu tidak selalu merupakan kesalahan - yang kita tahu adalah, definisi unit lokal mengklaim memiliki beberapa hubungan dengannya. Hubungan ini mungkin bukan yang kita pedulikan. Misalnya, itu bisa berupa
"Before:"
unit lain, tetapi kami tidak menggunakan unit lain itu.sumber
Tampaknya systemd memelihara tautan tetapi tidak tahu apa yang harus dilakukan dengan mereka ketika Anda menghapus file unit.
Anda dapat mencoba untuk menghapusnya secara manual
/etc/systemd/system/suspend.target.wants/
dan semacamnya tetapi tentu sajasystemctl reset-failed
dari jawaban sebelumnya sepertinya pilihan yang lebih baik.sumber