Systemd: pai de todos os outros processos
Um sistema Linux, e qualquer outro * nix, sempre inicia um processo que é o pai de todos os outros processos. Quando você usa o Systemd, esse processo é o systemd, o processo é sempre chamado de 'init' independente do sistema init. Assim que o systemd estiver em execução, ele iniciará os daemons que executam os subsistemas. Os daemons controlam quais recursos você tem e quais sistemas estão abertos. Seu prompt de login é um serviço gerenciado pelo systemd. O Systemd inicia muitos outros serviços e também monta todos os seus discos, incluindo as montagens instantâneas.
Como você controla o que começa?
Em primeiro lugar, o sistema init mais antigo tinha níveis de execução que muitos leitores reconhecerão. O nível de execução 1 era o modo de usuário único, o modo 2 multiusuário sem rede e 3-5 multiusuário e gráfico. Definir o nível de execução para 0 significava parada e 6 significava reinicialização. Os desenvolvedores do systemd acharam esses níveis pouco claros, então mudaram para serem chamados de alvos. Os alvos não são exatamente os mesmos, mas têm uma função semelhante. Quando um alvo específico está em execução, uma coleção específica de unidades está em execução. Mais sobre unidades mais tarde.
Definir o “nível de execução”, chamado de destino.
Você pode alterar o destino durante a execução, por exemplo, você pode usar um terminal para definir o seu destino como multiusuário. Isso interromperia sua GUI, X ou Wayland, mas permitiria que você e outras pessoas se conectassem com um console de texto. Use o seguinte comando.
$ systemctl isolate multiusuário.alvoOu, se você deseja iniciar sua área de trabalho, use o seguinte comando.
$ systemctl isolate graphical.alvoO que você está realmente interessado é em como iniciar o nível correto, você pode descobrir o que você tem agora desta forma.
$ systemctl get-defaultPara alterar o padrão, defina-o.
$ systemctl set-default graphical.alvoEste comando faz com que muitas unidades e serviços sejam iniciados conforme você inicializa seu computador. Você pode querer iniciar ou interromper um único serviço, no entanto.
INICIANDO, parando, habilitando e desabilitando um serviço.
É aqui que você tem a chance de mudar o que acontece na inicialização e durante a operação normal. Em contraste com as metas, as unidades são especiais para um determinado serviço. Para interromper um serviço, use 'systemctl stop', da mesma forma, você pode usar 'start' e 'restart'. Para fazer um serviço iniciar na inicialização você usa 'ativar', para interrompê-lo 'desativar'. Escolha um serviço, inicie e pare-o enquanto estiver em execução.
$ systemctl status cups.serviçoEste comando mostra o status do serviço, ele também mostra uma lista de ações realizadas pelo sistema em relação ao serviço. Para parar o serviço, use o comando abaixo.
$ systemctl stop cups.serviçoO serviço foi interrompido para a sua sessão atual. Para mudar para não iniciar na próxima inicialização, use desativar.
$ systemctl disable cups.serviçoObserve que você só pode desativar o serviço, isso não afetaria sua situação atual. O serviço continua funcionando. Na próxima inicialização, porém, ele não iniciará o serviço.
O Systemd também controla montagens, dispositivos, soquetes e muito mais. As unidades são mais baixas e mais fáceis de entender, se você já lidou com um Linux antes. Você também pode definir isso, mas o maior efeito na inicialização é controlar os serviços.
Como você adiciona seus próprios scripts?
Você pode adicionar seus próprios scripts facilmente, os detalhes que são interessantes de saber são como você faz seu script ou serviço depender de outros. Isso é perfeitamente demonstrado neste arquivo de serviço de retomada de wi-fi.
[Unidade]Descrição = Reiniciar networkmanager ao retomar
Depois = suspender.alvo
Depois = hibernar.alvo
Depois = hibrido-sono.alvo
[Serviço]
Type = oneshot
ExecStart = / bin / systemctl reiniciar gerenciador de rede.serviço
[Instalar]
WantedBy = suspender.alvo
WantedBy = hibernar.alvo
WantedBy = híbrido-sono.alvo
Este código cria um serviço que acontece uma vez (onehot) após os três alvos mencionados no código. O código que é executado é, neste caso, um único comando. Você também pode apontar o ExecStart para um script de sua escolha.
Conclusão
Alterando seu sistema, especialmente como ele inicializa, você pode fazer você mesmo, mas tome cuidado, pois isso tem muitas consequências para cada serviço, então certifique-se de que seu código seja estável e rápido de executar.