Qual é o objetivo, serviço e soquete do systemd?

35

Eu sei que todos eles são arquivos de unidade, mas não consigo entender o significado especial deles. Eu acho que os alvos são semelhantes aos daemons e soquetes são os mesmos que soquete (porta IP +), mas também com números de inode. Alguém poderia explicá-los em palavras simples?

drpaneas
fonte
3
As manpáginas do systemd são exemplares: você já viu man systemd.{service,socket,target}?
Jasonwryan
@jasonwryan Na verdade, eu olhei e não tenho a resposta completa. Estou olhando esta discussão para que eu possa aprender também. Eu sei o que é um serviço, um soquete, mas tenho uma lacuna quando se trata de segmentar. Ainda estou pesquisando e responderei à pergunta se ela ficar clara o suficiente para mim.
LD James

Respostas:

40

Unidades de serviço:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.

- systemd.service (5)

As unidades de serviço Systemd são as unidades que realmente executam e controlam programas e daemons, e dependências são usadas para garantir que os serviços sejam iniciados na ordem correta. Eles são o tipo de unidade mais usado.

Unidades de soquete:

A unit configuration file whose name ends in ".socket" encodes
information about an IPC or network socket or a file system FIFO
controlled and supervised by systemd, for socket-based activation.

- systemd.socket (5)

As unidades de soquete, por outro lado, não iniciam daemons por conta própria. Em vez disso, eles apenas ficam lá e escutam um endereço IP e uma porta ou um soquete de domínio UNIX, e quando algo se conecta a ele, o daemon para o qual o soquete é iniciado é iniciado e a conexão é entregue a ele.

Isso é útil para garantir que grandes daemons que ocupam muitos recursos, mas raramente são usados, não estejam executando e ocupando recursos o tempo todo, mas, em vez disso, são iniciados apenas quando necessário.

Unidades de destino:

A unit configuration file whose name ends in ".target" encodes
information about a target unit of systemd, which is used for grouping
units and as well-known synchronization points during start-up.

- systemd.target (5)

Os alvos são usados ​​para agrupar e ordenar unidades. Eles são praticamente equivalentes aos níveis de execução, pois em diferentes destinos, diferentes serviços, soquetes e outras unidades são iniciados. Ao contrário dos níveis de execução, eles são muito mais livres e você pode facilmente criar seus próprios alvos para encomendar unidades, e os alvos têm dependências entre si.

Por exemplo, multi-user.targeté onde a maioria dos daemons está agrupada e precisa basic.targetser ativada, o que significa que todos os serviços agrupados basic.targetserão iniciados antes dos que estão dentro multi-user.target.

kyrias
fonte
11

A documentação para systemd é excelente para um projeto relativamente novo. Para começar com destinos , de man systemd.target:

As unidades de destino não oferecem nenhuma funcionalidade adicional além da funcionalidade genérica fornecida pelas unidades. Eles existem apenas para agrupar unidades por meio de dependências (úteis como destinos de inicialização) e para estabelecer nomes padronizados para pontos de sincronização usados ​​em dependências entre unidades. Entre outras coisas, as unidades de destino são uma substituição mais flexível dos níveis de execução do SysV no sistema init clássico do SysV.

Esses "grupos de unidades" cobrem uma variedade de funcionalidades diferentes, das basic.targetquais cobrem essencialmente a inicialização do sistema, até tudo, desde dbus, gettys, pontos de montagem a trocas e temporizadores. Você pode ver a lista completa com man systemd.special.

arquivos de serviço são as unidades básicas para a execução de processos controlados pelo systemd. Novamente, de man systemd.service:

Um arquivo de configuração da unidade cujo nome termina em .service codifica informações sobre um processo controlado e supervisionado pelo systemd.

Estes constituem os daemons que podem ser iniciados, parados, reiniciados, recarregados.

Finalmente, soquetes , de man systemd.socket:

Um arquivo de configuração de unidade cujo nome termina em ".socket" codifica informações sobre um IPC ou soquete de rede ou um sistema de arquivos FIFO controlado e supervisionado pelo systemd, para ativação baseada em soquete.

Eles abrangem um soquete no sistema de arquivos ou na Internet, além de FIFOs clássicos como transporte. Cada unidade de soquete possui uma unidade de serviço correspondente, iniciada se a primeira conexão entrar no soquete ou no FIFO.

Além das manpáginas, vale a pena ler a série de postagens de blog de Lennart, systemd for Administrators , que fornece uma visão detalhada da arquitetura e implementação do systemd (atualmente há 20 postagens na série).

jasonwryan
fonte