題 如何刪除systemd服務


如果我安裝新服務然後決定我不再需要該應用程序並刪除它,該服務仍然列在輸出中 systemctl 如 錯誤

這是從哪裡來的,如何徹底刪除它們?


110
2017-12-01 02:23


起源




答案:


我的服務消失的秘訣(小心 rm 聲明!)

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服務有可能'包裝'/etc/init.d中的舊樣式腳本,所以你可能也想要清理它,但那是  systemd服務所在的地方。


183
2017-07-06 16:46



請注意,存儲Systemd單元文件的位置有多個,特別是 /usr/lib/systemd/system 並且 /etc/systemd/system/。供參考: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/... - Mark Edington
我也要刪除 /etc/init.d/[servicename] 在跑步之前 systemctl reset-failed - Andrea Romagnoli
是的,我忘了在刪除單位文件之前禁用。順便說一句,要查找要刪除的所有單元文件,我檢查輸出 systemctl cat [servicename]。 - Amir
它可能是/etc/init.d/中的“包裝”舊樣式腳本,但是如果你不刪除它,你會發現它仍然顯示在你刪除後留下的服務中。我可以告訴你,對我來說就是這樣。您可以簡單地將其添加到您的答案中以使其更完整,但希望下一個需要它的人將查看評論。 - Marlon
這很有效,謝謝,但我不知道為什麼我要手動清理這些垃圾。 - Rolf


聽起來像你卸載它,但沒有刪除systemd鉤子:

# systemctl disable [servicename]


23
2017-12-01 05:39





你可能正在尋找 reset-failed

$ sudo systemctl reset-failed
$

從systemd手冊頁:

reset-failed [PATTERN...]

重置指定單位的“失敗”狀態,或者如果沒有單位名稱              傳遞,重置所有單位的狀態。當一個單位失敗時              方式(即進程以非零錯誤代碼退出,終止              異常或超時),它會自動進入“失敗”              狀態及其退出代碼和狀態被記錄以供內省              管理員,直到服務重新啟動或重置為此              命令。


17
2018-04-13 09:41



這根本不是問題所要求的。為什麼這個被投票了17次呢? - psusi


加入 @標記lakata的答案,並牢記所需的注意力 rm 命令。 [chkconfig] 可以簡化過程!(點擊這裡閱讀chkconfig

要重新迭代命令列表:

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

注意: 第1個命令是可選的,具體取決於您是否希望在當前會話中保持服務運行(對於此問題,應使用該命令)。

第二個命令負責禁用和刪除(遵循符號鏈接)服務。


4
2017-07-29 12:48



chkconfig 是啟用/禁用SysVinit服務的原始命令。在使用的系統中 systemd,它可以作為向後兼容命令出現;但是原生的 systemctl 命令就是這麼簡單: systemctl disable [servicename] - telcoM
好的,但是我使用此命令的原因是,您不必顯式運行rm命令 - garlicFrancium


從systemd中刪除服務:

Systemd使用unit(文件定義服務)來刪除必須刪除單元的服務...這裡是單元位置列表:

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

刷新系統:

systemctl daemon-reload
systemctl reset-failed

鬼服務(未找到):

Systemd可以列出ghost(未找到)服務,即使由於多種原因刪除了該單元

  1. 單元仍然存在於systemd目錄之一上
  2. unit不退出,但其中一個systemd目錄中仍然存在文件鏈接
  3. 該服務用於其他單位*

(*)如果在其他單位中提到服務但不存在,systemd仍會列出該狀態未找到狀態的服務,即使沒有單位文件...您可以通過文本搜索搜索正在使用該服務的單位並編輯這些單位(如果您打算稍後安裝該服務,則不推薦)


0
2017-11-07 15:31