Quando executo o comando sudo systemctl list-unit-files
(acho que o sudo é opcional), recebo uma saída que mostra todos os serviços e seu estado.
Aqui está um trecho da minha máquina:
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
[email protected] enabled
gpsd.service indirect
[email protected] static
gpu-manager.service enabled
halt-local.service static
halt.service masked
hostname.service masked
...
Eu me pergunto por que alguns serviços estão no estado "mascarado". Eu acho que isso significa, "isso é melhor do que 'desativar', porque o serviço não pode ser iniciado, nem manualmente nem pelo systemd".
Como posso obter mais informações sobre o estado de uma unidade de serviço?
Quem colocou as unidades em seus respectivos estados?
Eu tentei, por exemplo,
sudo systemctl help dsmcad
- que apenas traga a documentation = ...
linha do arquivo de unidade./etc/systemd/system/dsmcad.service
Nota: Aqui eu sei exatamente o que é o serviço dsmcad e o que faz, eu mesmo o instalei. Estou mais interessado em uma solução geral.
mask
e umunmask
comando que pode ser usado comsystemctl
. Então apenas façasystemctl unmask name_of_service.service
.systemctl unmask name_of_service.service
removido completamente o meu arquivo de definição de serviço a partir/etc/systemd/system/
, então agora eu preciso adicioná-lo de volta. Se torna-se mascarado de novo, eu vou ser preso em um oO laço/etc/systemd/system
são apenas links simbólicos de serviços. Você deve adicionar o*.service
arquivo/lib/systemd/system
de onde ele será vinculado/etc/systemd/system
se você forenable
o serviço.mask
está criando um link para/dev/null
eunmask
está removendo esse link/etc/systemd/system
e, obviamente, não faz diferença se alguém colocar um arquivo lá.hostname.service
é mascarado como redundante porquesystemd
define o nome do host (de / etc / hostname) muito cedo durante a inicialização.Esta configuração é fornecida pelo pacote systemd do Debian.
Da mesma forma, o Debian agora pode ser executado sem um script de shell
halt
no sistema, ele é tratado pelo systemd-shutdown (código fonte aqui ).Se um serviço tiver sido mascarado manualmente, a máscara será instalada
/etc/systemd/system
.Os serviços também são mascarados quando são removidos no Debian / Ubuntu . Não sei porque.
fonte
Como você está solicitando informações sobre o estado mascarado, é importante mencionar que ele pode ser observado em um serviço que, após iniciado, teve as definições modificadas, recarrega (systemctl daemon-reload) e o novo estado NÃO está ok . Um exemplo fácil de entender é o seguinte cenário:
Portanto, o estado mascarado pode ser originado de definições de serviço incorretas. Portanto, o usuário pode induzir um estado não mascarado editando incorretamente o serviço.
Observação: não tenho certeza se isso acontece de propósito ou se é um bug simples (opção padrão), mas pode haver algumas informações interessantes para compartilhar
fonte