Raggruppamento di servizi di sistema


10

Ho scritto una mezza dozzina di .servicefile per le diverse parti che compongono il sistema su cui sto lavorando. È utile poter avviare l'intero sistema in modo frammentario, ma mi piacerebbe anche avere un'unica unità che avvii l'intero sistema in una chiamata systemctl.

Qual'è il miglior modo per farlo?

Risposte:


10

Si desidera un'unità di tipo target , con tutte le unità di servizio elencate come Wants=dipendenze. Quindi lo si avvia utilizzando systemctl start unitname.target. (Assicurati di non utilizzare systemctl isolatequi; ciò chiuderà tutto tranne ciò che è nella struttura delle dipendenze dei tuoi servizi, che presumibilmente non vuoi.)


In alternativa, è possibile utilizzare la WantedBychiave nella [Install]sezione e prendere nota di una destinazione già esistente. Ad esempio, se si desidera che i servizi vengano sempre avviati prima che altri utenti possano accedere, utilizzare multi-user.target.
saiarcot895,

Sì, il tipo di destinazione con l' Wants=elenco di tutti i servizi sembra sufficiente per l' avvio , tuttavia non riesco a trovare alcun modo per arrestare e riavviare il lavoro utilizzando un tipo di destinazione. C'è un tipo che lo consente?
Magnus,

Magnus, hai mai trovato una buona soluzione per questo?
Sam Hendley,

2
Sam, Magnus: Sembra che sia possibile interrompere i servizi desiderati .targetutilizzando StopWhenUnneeded=yesuno in ciascuno dei .servicefile. superuser.com/questions/470153/…
jonnor

1
Nel mio caso particolare posso usare gli strumenti di systemd che gestiscono il globbing :) Quindi, per iniziare uso un .targete per interrompere uso systemctl stop foo.\*(dal momento che tutti i servizi coinvolti hanno file di servizio che iniziano con arguzia foo.).
Magnus,

2

Hai provato a utilizzare PartOfle sottounità del gruppo target oltre a quelle Wantsnel target? Es: PartOf=foo.targetin foo-sub1.servicee Wants=foo-sub1.service foo-sub2.servicein foo.target. Ho appena provato a farlo e sono stato in grado di avviare e arrestare tutte le mie sottounità semplicemente avviando e arrestando l'obiettivo.

ParteDi =

Configura dipendenze simili a Richiede =, ma limitato all'arresto e al riavvio delle unità. Quando systemd arresta o riavvia le unità elencate qui, l'azione viene propagata a questa unità. Si noti che questa è una dipendenza a senso unico: le modifiche a questa unità non influiscono sulle unità elencate.

Quando PartOf = b.service viene utilizzato su a.service, questa dipendenza verrà mostrata come ConsistsOf = a.service nell'elenco delle proprietà di b.service. ConsistsOf = dipendenza non può essere specificato direttamente.


Benvenuto in U&L! Se il tuo post non fornisce una risposta alla domanda, dovrebbe essere pubblicato nella sezione Comment sotto la domanda.
Yurij Goncharuk,

Ciò fornisce l'altra metà della risposta fornita da Tom Hunt: la possibilità di interrompere un intero gruppo di servizi.
Benny Jobigan,
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.