일부 시스템 서비스가 “마스크”상태 인 이유는 무엇입니까? static debug-shell.service

명령을 실행하면 sudo systemctl list-unit-files(sudo가 선택 사항이라고 생각합니다) 모든 서비스와 상태를 보여주는 출력을 얻습니다.

내 컴퓨터의 스 니펫은 다음과 같습니다.

UNIT FILE                                  STATE
...
debian-fixup.service                       static
debug-shell.service                        disabled
display-manager.service                    enabled
dns-clean.service                          enabled
dsmcad.service                             enabled
emergency.service                          static
failsafe-x.service                         static
friendly-recovery.service                  masked
fuse.service                               masked
gdm.service                                masked
getty-static.service                       static
getty@.service                             enabled
gpsd.service                               indirect
gpsdctl@.service                           static
gpu-manager.service                        enabled
halt-local.service                         static
halt.service                               masked
hostname.service                           masked
...

일부 서비스가 “마스크”상태 인 이유가 궁금합니다. 나는 이것이 “손 으로든 체계적 으로든 서비스를 시작할 수 없기 때문에 이것이 ‘비활성화’보다 낫다”고 생각한다.

서비스 장치 상태에 대한 자세한 정보를 얻으려면 어떻게해야합니까?

누가 단위를 각자의 상태에 넣었습니까?

예를 들어,
단위 파일에서 줄을 sudo systemctl help dsmcad가져옵니다 documentation = ..../etc/systemd/system/dsmcad.service

참고 : 여기에 내가 아는 바로 , 내가 나 자신을 설치 한 어떤 서비스를에 dsmcad하고 무엇을하지 않습니다. 일반적인 솔루션에 더 관심이 있습니다.



답변

mask의 더 강력한 버전입니다 disable. disable지정된 단위 파일의 모든 심볼릭 링크를 사용하면 제거됩니다. mask단위를 사용 하면에 연결됩니다 /dev/null. 예를 들어 by로 확인하면 표시됩니다 systemctl status halt.service. 장점은 mask모든 종류의 활성화, 심지어 수동을 방지하는 것입니다.

주의 : systemctl list-unit-files장치 파일 의 상태 (정적, 활성화, 비활성화, 마스크, 간접)를 나열하고 있으며 서비스 상태와 관련이 없습니다. 서비스 사용을 살펴 보려면 systemctl list-units.


답변

hostname.servicesystemd시작 중에 호스트 이름 (/ etc / hostname에서)을 매우 일찍 설정 하므로 중복으로 마스크됩니다 .

이 설정은 데비안 시스템 패키지에서 제공합니다.

$ ls -l /lib/systemd/system/hostname.service
lrwxrwxrwx 1 root root 9 Apr  8 22:47 /lib/systemd/system/hostname.service -> /dev/null
$ dpkg-query --search /lib/systemd/system/hostname.service
systemd: /lib/systemd/system/hostname.service

마찬가지로, 데비안은 이제 halt시스템에 쉘 스크립트없이 실행할 수 있으며 , 대신 systemd-shutdown (source code here )에 의해 처리 됩니다.

서비스가 수동으로 마스킹 된 경우 /etc/systemd/system대신 마스크가 설치 됩니다.

서비스는 Debian / Ubuntu에서 제거 될 때 마스크됩니다 . 이유를 모르겠습니다.


답변

마스킹 된 상태에 대한 정보를 요청하고 있으므로 서비스를 시작한 후 정의를 수정 한 후 다시로드하고 (systemctl daemon-reload) 새 상태가 정상이 아닌 서비스에서 관찰 될 수 있음을 언급하는 것이 중요합니다 . 이해하기 쉬운 예는 다음과 같습니다.

a) the service is running well (already started)
b) edit the service definition file and delete everything in its contents
c) reload
d) state masked will be observed too

따라서, 마스킹 된 상태는 부적절한 서비스 정의로부터 시작될 수있다. 따라서, 사용자는 서비스를 부적절하게 편집함으로써 마스킹되지 않은 상태를 유도 할 수있다.

관찰 : 의도적으로 발생하는지 또는 간단한 버그 (기본 옵션)인지 확실하지 않지만 공유하기에 흥미로운 정보 일 수 있습니다