Como remover unidades systemd ausentes?

34

Estou com problemas para descobrir como remover unidades do systemd que não possuem mais arquivos. Eles ainda parecem permanecer no sistema de alguma forma.

As antigas unidades quebradas que estou tentando remover:

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

Os arquivos não existem, mas um recarregamento ainda tem essas unidades remanescentes:

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

Não há arquivos relacionados a eles que eu possa encontrar:

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

Então, como me livrar desses?

    
por Andy Shinn 19.06.2014 / 20:00

3 respostas

63

O comando que você está procurando é systemctl reset-failed

    
por 19.06.2014 / 20:32
0

Parece que o systemd mantém links, mas não sabe o que fazer com eles quando você exclui o arquivo da unidade.

Você pode tentar removê-los manualmente em /etc/systemd/system/suspend.target.wants/ , mas é claro que systemctl reset-failed de uma resposta anterior parece uma opção melhor.

$ 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.
    
por 29.03.2018 / 14:39
0

Quando o systemd analisa arquivos de definição de unidade, ele toma nota de quaisquer outras unidades relacionadas chamadas no arquivo - se essas outras unidades existem ou não.

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

Quando uma unidade aparece como "não encontrada", não é necessariamente um erro - tudo o que sabemos é que uma definição de unidade local alega ter alguma relação com ela. Esse relacionamento pode não ser um com o qual nos importamos. Por exemplo, poderia ser "Before:" alguma outra unidade, mas não usamos essa outra unidade.

    
por 14.11.2018 / 18:07