不足しているsystemdユニットを削除する方法は?


40

ファイルがなくなったsystemdユニットを削除する方法がわかりません。彼らはまだ何らかの形でシステムに残っているようです。

私が削除しようとしている古い壊れたユニット:

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'.

ファイルは存在しませんが、リロードにはこれらのユニットが残っています。

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'.

私が見つけることができるそれらに関連するファイルはありません:

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 ~ $

これらをどのように取り除くのですか?


あなたはそれについて言及しませんが、私はsystemctl disable彼らにしようとすると失敗すると思いますよね?
dawud

2
0と一緒に存在します。無効にするものは何もありません(すでに欠落/無効になっています)。
アンディシン14年

ここ(およびこれまでのところ)で提案されているすべてのソリューションを試してみたところ、再起動しても何も機能しませんでした。削除しようとしているユニットは、一度インストールまたはインストールを試みた後、後で完全に削除されました。したがって、明らかにaptパージはsystemdに与えられた構成を削除しません。これらの「見つからない」ユニットが問題を引き起こすかどうかは、まだはっきりしていません。
楕円ビュー

/ var / lib / systemd / deb-systemd-helper-enabled /内のファイルを削除できる可能性があると思いますが、これを台無しにしたいかどうかはわかりません。私はそこに2つの既知の行き止まりがあるように見えます:mariadb.service.dsh-alsoとmysql.service.dsh-also
ビュー

@Elipticalview念のため、これらのファイルのバックアップを作成し、その後これらを削除しますか?
gf_

回答:


76

後のコマンドは systemctl reset-failed


3
ありがとうございました!それは私にはより明らかではなかった、なぜ私は...知らない
アンディ・シン

6
これは最終的に「実際の」サービスをクリーンアップするために機能しましたが、私は消えることを拒否するエイリアスサービスを持っています。私が試したdisabledaemon-reloadreset-failedしかし、エイリアスサービスは、として起動しますnot-found inactive dead常に。また、サービス名に一致するものをディスクで検索しましたが、結果はありませんでした。
マークラカタ

3
私はちょうどこれにsystemctl stop <service>出くわして、私のために働きました。
mpontillo 16

同じことがタイマーにも当てはまります-タイマーreset-failedをクリーンアップするには、まずタイマーを停止する必要があります。
rustyx

私のために働いたのですが、私はそれらの1つについて最初にマスクしてからマスクを解除しなければなりませんでした。また、1つを停止してからマスクとマスク解除を行わなければならず、その後、リセット失敗は最終的にすべてを取り除きました。
tgunr

2

systemdがユニット定義ファイルを分析するとき、ファイル内で呼び出される他の関連ユニットに注意します-他のユニットが存在するかどうか。

$ 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> )

ユニットが「not-found」として表示される場合、それは必ずしもエラーではありません-私たちが知っているのは、ローカルユニット定義がそれと何らかの関係があると主張することだけです。この関係は、私たちが気にする関係ではないかもしれません。たとえば、"Before:"他のユニットでもかまいませんが、そのユニットは使用しません。


0

systemdはリンクを維持しているようですが、ユニットファイルを削除したときにリンクをどう処理するかわかりません。

あなたはそれらを手動で削除しようとすることができます/etc/systemd/system/suspend.target.wants/が、もちろんsystemctl reset-failed以前の答えからはより良いオプションのように聞こえます。

$ 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.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.