누락 된 시스템 장치를 제거하는 방법?


40

더 이상 파일이없는 시스템 장치를 제거하는 방법을 알아내는 데 문제가 있습니다. 그들은 여전히 ​​시스템에 남아있는 것처럼 보입니다.

내가 제거하려고하는 오래된 깨진 단위 :

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으로 존재합니다. 비활성화 할 것이 없습니다 (이미 누락 / 비활성화되었습니다).
Andy Shinn

여기 (그리고 지금까지 아래에 제안) 모든 솔루션을 시도하고 재부팅했지만 아무것도 작동하지 않았습니다. 제거하려는 장치가 한 번 설치되거나 설치를 시도한 후 나중에 제거했습니다. 따라서 적절한 제거는 systemd에 제공된 구성을 제거하지 않습니다. 이 "찾을 수없는"단위로 인해 문제가 발생하는지 여부는 아직 명확하지 않습니다.
타원형보기

/ var / lib / systemd / deb-systemd-helper-enabled /에서 파일을 삭제할 수 있다고 생각하지만 이것을 망칠 것인지 확실하지 않습니다. 나는 두 가지 알려진 막 다른 골목을 가지고있는 것 같습니다 : mariadb.service.dsh-also와 mysql.service.dsh-also
타원형보기

@Elipticalview 만일을 대비하여이 파일들을 백업 한 후 제거 하시겠습니까?
gf_

답변:


74

당신이 따르는 명령은 systemctl reset-failed


3
감사합니다! 그게 왜 나에게 더 분명하지 않은지 모르겠다.
Andy Shinn

5
이것은 마침내 "실제"서비스를 정리하는 데 효과가 있었지만, 나가기를 거부하는 별칭 서비스가 있습니다. 나는 노력 disable, daemon-reload그리고 reset-failed하지만 별명 서비스는 온다 not-found inactive dead항상. 또한 서비스 이름과 일치하는 항목이 없는지 디스크에서 검색했습니다.
마크 라 카타

3
방금 이것에 부딪 히고 systemctl stop <service>나를 위해 일했습니다.
mpontillo

타이머에도 동일하게 적용됩니다 reset-failed. 정리 하기 전에 먼저 중지 해야합니다.
rustyx

일종의 나를 위해 일했지만 먼저 마스크 중 하나를 마스크 해제해야했습니다. 또한 재설정을 실패한 후 마스크를 제거하고 마스크를 해제해야 결국 모든 것이 제거되었습니다.
21시 44 분

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

단위가 "찾을 수 없음"으로 표시 될 때 반드시 오류 일 필요는 없습니다. 지역 단위 정의는 해당 단위와 관계가 있다고 주장합니다. 이 관계는 우리가 신경 쓰지 않을 수도 있습니다. 예를 들어, "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.