systemctl에서 사용 가능한 모든 서비스를 나열하는 방법은 무엇입니까?


279

의 모든 enabled서비스를 systemctl어떻게 나열 합니까?

나는 systemctl명령을 실행 하는 것 자체가 모든 서비스를 나열한다는 것을 알고 있지만 enabled그중 하나만을 얻고 싶습니다 .


가능하다는 것은 무엇을 의미합니까? 실행중인 서비스를 의미합니까?
Gen

7
@Gen 서비스 활성화는 서비스를 시작하는 것과는 다릅니다. 참조하십시오 man systemctl.
Jos

매혹적인. 가장 정답이 아니지만 가장 낮은 등급의 답변이 가장 "올바른"답변입니다. @FelipeAlvarez는 Unix & Co.의 오랜 (그리고 훌륭한) 디자인 원칙을 체계적으로 위반하는 방식에 대한 훌륭한 예입니다. / systemctl은 원하는 것을 정확하게 수행 할 수 있습니다 (대부분의 숙련 된 사용자는 그 완전한 팽창을 고려할 것입니다). 왜 Linus Torvalds가 체계적으로 그렇게 비판적으로 중요한지 더 잘 알기 시작합니다.
BISI

답변:


411

systemctl list-unit-files | grep enabled활성화 된 모든 것을 나열 합니다.

현재 실행중인 것을 원하면 필요합니다 systemctl | grep running.

찾고있는 것을 사용하십시오. 사용, 실행되고있는 것은 아닙니다. 그리고 달리는 것이 가능하다는 의미는 아닙니다. 그것들은 서로 다른 두 가지입니다.

Enabled는 다음 부팅시 시스템이 서비스를 실행 함을 의미합니다. 따라서 서비스를 활성화해도 여전히 수동으로 서비스를 시작하거나 재부팅해야합니다.

실행은 실제로 실행 중임을 의미하지만 활성화되어 있지 않으면 재부팅해도 다시 시작되지 않습니다.


5
이 중요한 정보를 보여주기 위해 외부 도구 (grep)를 사용해야하는 것이 귀찮습니다. 그러나 :) 우리에게 길을 보여 주셔서 감사합니다
펠리페 알바레즈에게

34
@FelipeAlvarez 맞습니다. 그러나 이것이 리눅스가 작동하는 방식입니다. 서로 잘 작동하는 많은 작은 바이너리. systemctl은 요청한 내용을 처리하고 서비스를 나열합니다. grep이 이미 존재하며 모든 프로그램의 출력으로 잘 수행 할 수 있으므로 systemctl에 내장 된 필터링 명령이 없습니다. 항상
Dorian

3
동의하고 그래야합니다. 그러나 systemd는 이미 그렇게 많은 것을 시도하여 왜 활성화 된 서비스를 나열 할 수 없는지 궁금합니다.
Felipe Alvarez

5
systemctl | grep running나에게 아무것도 열거하지 마십시오! 뭔가 실행중인 경우에도 다음과 같은 상태 만 표시됩니다.enabled, disabled, masked, static
Cirelli94

27
간단한 :systemctl list-unit-files --state=running

93

man systemctl 상태 :

--state=

인수 유닛의 쉼표로 구분되어야 LOAD, SUB또는 ACTIVE상태. 단위를 나열 할 때 지정된 상태의 항목 만 표시하십시오. --state=failed실패한 장치 만 표시하는 데 사용 합니다.

설명:

LOAD: 장치 정의가 올바르게로드되었는지 여부를 반영합니다.
ACTIVE: 고급 단위 활성화 상태, 즉 일반화 SUB.
SUB: 하위 레벨 장치 활성화 상태, 값은 장치 유형에 따라 다릅니다.

이 옵션을 사용하여 다음 enabled과 같은 유닛 만 표시 할 수도 있습니다 .

systemctl list-unit-files --state=enabled

장치가 enabled시작되면 시스템이 시작시 시작됩니다. 무언가를 enabled설정해도 실제로는 그렇지 않으므로 start수동으로 설정하거나로 설정 한 후 시스템을 재부팅해야합니다 enabled.


5
동시에 활성화하고 시작하려면 :systemctl enable --now ...
Aurélien Ooms

1
--state=enabled시스템 버전 215 (Raspbian 8 Jessie)에는 영향을 미치지 않지만 시스템 버전 229 (Ubuntu 16.04.03 Xenial)에서는 작동합니다.
mpb December

@ mpb : 그러나 아치 리눅스의 버전 235에서는 완벽하게 작동합니다.

64

모든 목록 systemd에 서비스를 state=active하고sub=running

systemctl list-units --type=service --state=running

실행 중이거나 종료 된 모든 systemdserice 를 나열하려면state=active

systemctl list-units --type=service --state=active

12

여전히 upstart / init 실행중인 서비스를 포함하여 '활성화 된'서비스를 보려면 :

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

현재 실행중인 모든 서비스를 보려면 다음을 수행하십시오.

systemctl list-units --type service --state running

불행히도 서비스 이름은 두 목록에서 다를 수 있습니다 (예 : sshdvs. sshsyslogvs.) rsyslog.
OrangeDog

유일한 "논 그렙"정답. 왜 시작이 언급되었는지 잘 모르겠지만 ...
rogerdpack at

2

모든 활성 및 실패 서비스에 대한 개요 :

systemctl list-units --type service --state running,failed
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.