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.target
ser ativada, o que significa que todos os serviços agrupados basic.target
serão iniciados antes dos que estão dentro multi-user.target
.
man
páginas do systemd são exemplares: você já viuman systemd.{service,socket,target}
?