systemctl은 레거시 서비스를 포함하여 활성화된 모든 서비스를 나열할 수 있습니까?

systemctl은 레거시 서비스를 포함하여 활성화된 모든 서비스를 나열할 수 있습니까?

이 문제Q: "systemctl에서 활성화된 모든 서비스를 어떻게 나열합니까?" 이 페이지의 답변은 다음과 같습니다.

systemctl list-unit-files | grep enabled
systemctl list-unit-files --state=enabled

최소한 systemd 버전 229(Ubuntu 16.04)부터 systemctl list-unit-files레거시 초기화 스크립트를 통해 시작된 "LSB" 서비스는 포함되지 않습니다.

따라서 원래 질문에 대한 답은 아직 남아 있는 것 같습니다. systemd는 레거시 서비스를 포함하여 부팅 시 시작하려고 시도할 모든 서비스(및 기타 장치 유형) 목록을 표시할 수 있습니까?

고려하다:

$ systemctl list-units | grep LSB | grep grub
  grub-common.service    loaded    active exited    LSB: Record successful boot for GRUB

$ systemctl list-unit-files | grep enabled | grep grub || echo 'nothing found'
nothing found

$ systemctl is-enabled grub-common
grub-common.service is not a native service, redirecting to systemd-sysv-install
Executing /lib/systemd/systemd-sysv-install is-enabled grub-common
enabled

systemctlgrub-common명시적으로 요청하면 systemctl활성화되었다는 메시지가 표시된다는 점을 이해하세요 .

그렇다면... 레거시 스크립트를 포함하여 시작 시 실행하려고 시도할 모든 서비스 목록을 표시하도록 systemd를 얻을 수 있는 방법이 있습니까?

답변1

나는 당신이 원하는 명령이 다음과 같다고 생각합니다.

systemctl list-units --type service --all

내 테스트에서는 이전 시작 서비스의 서비스까지 포함하여 모든 서비스가 나열되었습니다.

원천:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-services

답변2

나는 당신이 원하는 것이 무엇인지 믿습니다

systemctl list-unit-files --type service --state enabled

설치된 장치 파일을 나열 하는 데 사용됩니다 list-unit-files(현재 메모리에 있는 파일뿐만 아니라). 매뉴얼 페이지의 일부 관련 섹션:

  list-units [PATTERN...]             List units currently in memory

  list-unit-files [PATTERN...]        List installed unit files
  
  is-enabled UNIT...                  Check whether unit files are enabled

-t --type=TYPE         List units of a particular type
   --state=STATE       List units with particular LOAD or SUB or ACTIVE state

-a --all               Show all properties/all units currently in memory,
                       including dead/empty ones. To list all units installed
                       on the system, use 'list-unit-files' instead.

이전 버전의 systemd에서이것은 사실이 아니다:

정말 오래된 시스템 버전에서는 "systemctl list-unit-files"가 기본 유닛 파일만 표시합니다. 최신 버전에서는 더 쉽게 찾을 수 있도록 생성된 유닛 파일도 표시됩니다.

생성된 모든 서비스를 is-enabled. 일부는 return enabled, 일부는 return disabled, 일부는 세 번째 상태 " generated"(모두)를 반환합니다. 나는 이것에 대해 잘 모르겠습니다.

systemctl is-enabled $(systemctl list-unit-files --type service --state generated | awk '/.*\.service/ {print $1}' | tr '\n' ' ') |& grep "^\w*$" | sort | uniq -c | sort -rn

관련된 링크들

관련 정보