Qual è l'obiettivo, il servizio e il socket di systemd?


35

So che sono tutti file di unità, ma non riesco a capirne il significato speciale. Penso che gli obiettivi siano simili ai demoni e che i socket siano gli stessi del socket (porta IP +) ma anche con i numeri di inode. Qualcuno potrebbe spiegarli in parole semplici?


3
Le manpagine systemd sono esemplari: hai guardato man systemd.{service,socket,target}?
Jasonwryan,

@jasonwryan In realtà ho guardato e non ho la risposta completa. Sto fissando questa discussione in modo che io possa imparare anche. So cos'è un servizio, un socket, ma ho un gap quando si tratta di target. Sto ancora effettuando ricerche e risponderò alla domanda se mi sarà abbastanza chiaro.
LD James,

Risposte:


40

Unità di servizio:

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

- systemd.service (5)

Le unità di servizio Systemd sono le unità che eseguono effettivamente e tengono traccia di programmi e demoni e le dipendenze vengono utilizzate per assicurarsi che i servizi vengano avviati nell'ordine giusto. Sono il tipo di unità più comunemente usato.

Unità prese:

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)

Le unità socket, d'altra parte, in realtà non avviano demoni da sole. Invece, si siedono lì e ascoltano un indirizzo IP e una porta, o un socket di dominio UNIX, e quando qualcosa si connette ad esso, viene avviato il demone a cui è destinato il socket e la connessione viene passata ad esso.

Questo è utile per assicurarsi che i grandi demoni che occupano molte risorse ma che sono usati raramente non siano in esecuzione e assorbano risorse continuamente, ma invece vengono avviati solo quando necessario.

Unità bersaglio:

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)

I target vengono utilizzati per raggruppare e ordinare unità. Sono in qualche modo equivalenti ai runlevel in quanto a obiettivi diversi vengono avviati servizi diversi, socket e altre unità. A differenza dei runlevel, sono molto più in forma libera e puoi facilmente creare i tuoi obiettivi per ordinare unità e gli obiettivi hanno dipendenze tra di loro.

Ad esempio, multi-user.targetè ciò che raggruppa la maggior parte dei demoni e basic.targetdeve essere attivato, il che significa che tutti i servizi raggruppati basic.targetverranno avviati prima di quelli in multi-user.target.


11

La documentazione per systemd è eccellente per un progetto relativamente nuovo. Per iniziare con obiettivi , da man systemd.target:

Le unità target non offrono alcuna funzionalità aggiuntiva oltre alla funzionalità generica fornita dalle unità. Esistono semplicemente per raggruppare le unità tramite dipendenze (utile come target di avvio) e per stabilire nomi standardizzati per i punti di sincronizzazione utilizzati nelle dipendenze tra unità. Tra le altre cose, le unità target sono un sostituto più flessibile per i runlevel SysV nel classico sistema init SysV.

Questi "gruppi di unità" coprono una vasta gamma di funzionalità diverse, da basic.targetcui essenzialmente copre l'avvio del sistema, fino a tutto da dbus, gettys, mount points a swap e timer. Puoi vedere l'elenco completo con man systemd.special.

i file di servizio sono le unità di base per l'esecuzione dei processi controllati da systemd. Ancora una volta, da man systemd.service:

Un file di configurazione dell'unità il cui nome termina con .service codifica le informazioni su un processo controllato e supervisionato da systemd.

Questi costituiscono i demoni che possono essere avviati, arrestati, riavviati, ricaricati.

Infine, prese , da man systemd.socket:

Un file di configurazione dell'unità il cui nome termina in ".socket" codifica le informazioni su un IPC o un socket di rete o un file system FIFO controllato e supervisionato da systemd, per l'attivazione basata su socket.

Coprono un socket nel file system o su Internet, oltre ai classici FIFO come trasporto. Ogni unità presa ha un'unità di servizio corrispondente, che viene avviata se la prima connessione arriva sulla presa o FIFO.

Oltre alle manpagine, vale la pena leggere la serie di post di blog di Lennart, systemd per amministratori , che fornisce uno sguardo approfondito all'architettura e all'implementazione di systemd (attualmente ci sono 20 post nella serie).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.