O comando dump
Se alguém lhe pedir para mostrar toda a configuração do seu sistema, use o comando dump.
$ systemd --dump-configuration-itemsO arquivo cobre todas as unidades que você tem no sistema. Assim que um desenvolvedor tiver esse arquivo disponível, a pessoa irá repassar o que você tem e tentar encontrar os problemas que você está enfrentando. Terminado. No entanto, você não estaria lendo este artigo se deixasse outra pessoa fazer tudo. Deixe-nos ver o que você pode fazer com um serviço por vez e aprender alguns truques para filtrar seus resultados.
A hierarquia do systemd
Para se tornar eficiente, você precisa perceber que, dentro do systemd, você tem hierarquia e pode definir cada serviço para depender e / ou esperar por outros serviços. As diferentes maneiras de fazer isso são evidentes nos arquivos de serviço. As diferentes afirmações que você tem são 'Deseja', 'Obrigatório', 'Antes' e 'Depois'. Para uma análise eficaz, você pode usá-los para ver se sua unidade está inativa por causa de dependências. Você pode então rastrear onde está o problema subjacente. Aqui está um exemplo disso.
$ systemctl list-dependencies --before xpra.serviçoA impressão mostra as outras unidades que xpra.serviço depende de. Neste caso, as outras unidades estão ativas, então precisamos nos concentrar em por que a própria unidade está quebrada. O exemplo estava sem um arquivo de certificado.
O uso mais importante disso é investigar se seu serviço está faltando dependências, use o comando desta forma.
$ systemctl list-dependencies xringdO resultado é uma longa lista, convenientemente organizada em uma árvore e mostrando todos os serviços como verdes ou vermelhos se algo estiver errado. Você também pode ver as dependências no arquivo de serviços. Abra o arquivo usando seu editor favorito ou use systemctl, que irá abrir o arquivo com o editor padrão.
Listagem de serviços ativos
Quando você quiser investigar um sistema, você precisará saber como as unidades se encaixam. Para fazer isso, você tem várias opções para imprimir os detalhes. Você pode listar quais sistemas estão ocupados, falharam e assim por diante. Mais importante, você pode listar como eles são montados, qual unidade, serviço, etc. a unidade atual depende de. O principal comando para fazer isso é systemctl, as opções são úteis para restringir seu problema específico.
Para obter o uso adequado do systemctl, observe cuidadosamente as opções do comando. Existem opções para escolher exatamente o que você precisa, especialmente em relação ao estado de quaisquer serviços. Procuramos aqui serviços com problemas.
$ systemctl list-unit-files --type = serviceEsta lista também é longa e você deve percorrer todos os serviços para encontrar o que procura. Com mais alguns parâmetros, você pode filtrar por um específico ou aqueles que estão desativados. O comando abaixo irá encontrar todas as unidades que estão mascaradas.
$ systemctl list-unit-files --type = service --state = maskedOs serviços mascarados são bloqueados para que outros serviços não possam iniciá-los, mesmo se o outro serviço precisar deles. Isso pode ser usado para garantir que você não tenha serviços conflitantes em execução. Normalmente, muitos serviços são mascarados pelo seu gerenciador de pacotes quando você remove o pacote. Você pode remover o arquivo de serviço completamente se desejar depois de remover um serviço. Também é possível que ele destrua muitos serviços que você deseja, então certifique-se de saber se você precisa dos serviços mascarados.
Alguns serviços são mascarados por processos e você nem sempre pretende que o serviço seja mascarado. Quando isso acontecer com seu sistema, a primeira ação a tomar é desmascarar usando systemctl. No entanto, isso nem sempre é possível, então você precisa remover o link no diretório apropriado. Na maioria dos sistemas, isso será lib / systemd / system. Antes de fazer isso, verifique se o arquivo é realmente um link para / dev / null.
$ ls -l lib / systemd / system> | grep null
Quando tiver certeza de que deseja remover este link, remova-o com rm ou desvincule.
$ rm / lib / systemd / system / udisks2.serviçoAgora que você já sabe como fazer, ouça este aviso: muitas vezes é preciso ter esse link aí. Tome o lvm2 como exemplo, ele é mascarado de operação para não interferir com o novo sistema, onde o lvm2 vem como muitos pequenos serviços. Veja o resultado de:
$ systemctl status lvm2 *Remover o link pode causar estragos no seu sistema porque o próprio lvm2 precisa dele desligado para evitar conflitos. Este é apenas um exemplo, então fique atento antes de prosseguir.
Conclusão
Quando você deseja listar serviços no systemd, você deve primeiro refletir sobre o que está procurando em sua busca. Você está procurando um serviço de que precisa ou vê que tem muitos serviços?. De qualquer forma, você precisa adaptar sua consulta às suas necessidades específicas. O Systemd parece confuso no início, mas quando você olha mais de perto, ele usa uma maneira direta de unificar a inicialização para que os serviços possam iniciar em paralelo onde o sistema precisar, enquanto cada serviço espera pelo serviço específico do qual dependem.