User Tools

Site Tools


doc:appunti:linux:sa:systemd

This is an old revision of the document!


Systemd

Comandi di servizio

Quando si modifica qualche file di configurazione (ad esempio gli script in /etc/init.d/, oppure gli unit files in /lib/systemd/system/) è necessario notificare systemd in modo che rilegga tutte le dipendenze, ecc:

systemctl daemon-reload

Per vedere lo stato di una unit (ad esempio di un servizio) ed anche le ultime righe di log:

systemctl status snmpd.service
● snmpd.service - LSB: SNMP agents
   Loaded: loaded (/etc/init.d/snmpd)
   Active: active (running) since Fri 2016-04-15 17:08:29 CEST; 3 weeks 6 days ago

Lo stato loaded significa che la unit è stata presa in carico da systemd, non che sia effettivamente avviata e in esecuzione.

Lo stato di attivazione active oppure inactive indica se il servizio sta girando oppure no. I tradizionali script di start/stop in /etc/init.d/ consentono di passare da uno stato all'altro, ma il metodo suggerito è il nuovo:

systemctl stop snmpd.service
systemctl start snmpd.service

Per disabilitare o abilitare un servizio (quindi creare i vari link simbolici /etc/rc[0123456S].d/ che attivano il processo ai vari runlevel:

systemctl disable snmpd.service
systemctl enable snmpd.service

Contrariamente a quanto si potrebbe immaginare i comandi status o is-enabled non mostrando se il servizio è abilitato o disabilitato. È necessario ispezionare la proprietà Before con il comando show, che è differente nei due casi:

systemctl disable snmpd
systemctl show snmpd.service | grep Before
Before=shutdown.target

systemctl enable snmpd
systemctl show snmpd.service | grep Before
Before=multi-user.target graphical.target shutdown.target

OpenVPN con systemd

Ci sono delle novità su come avviare da riga di comando una connessione OpenVPN su Debian 8 (Jessie).

Una configurazione tipica per una workstation è quella di NON attivare le vpn al bootstrap, mettendo in /etc/default/openvpn:

AUTOSTART="none"

Questa impostazione funziona ancora, ma con il nuovo systemd non è più possibile passare argomenti agli script start stop, quindi per avviare uno specifico tunnel non funziona più il comando

/etc/init.d/openvpn start VPN_NAME

Funzionano invece i seguenti comandi per attivare o disattivare la singola VPN:

systemctl start openvpn@VPN_NAME
systemctl stop openvpn@VPN_NAME

ATTENZIONE Se si modifica il file /etc/default/openvpn, non basta fermare e far ripartire il servizio, ma bisogna disabilitarlo e riabilitarlo:

systemctl stop openvpn
systemctl disable openvpn
systemctl enable openvpn
systemctl start openvpn

Unit file, service, device, target, ...

Nella terminologia di systemd una unit è genericamente una risorsa che il sistema sa gestire. Tali risorse sono definite da alcuni file chiamati appunto unit file.

Gli unit file vengono installati dai vari pacchetti nella directory /lib/systemd/system/. Se si desidera personalizzare qualcosa di uno unit file è opportuno farlo nella directory /etc/systemd/system/, che ha la precedenza su quella di sistema. Se si deve fornire solo dei piccoli snippet di configurazione è consigliato creare una cartella del tipo /etc/systemd/system/example.service.d/ e metterci all'interno degli opportuni file .conf. Ricapitolando:

  • /lib/systemd/system/
  • /etc/systemd/system/
  • /etc/systemd/system/example.service.d/

Uno unit file può descrivere diversi tipi di risorsa, indicato dall'estensione del file stesso. I più comuni sono:

.service In genere una applicazione (demone) che fornisce un servizio. Contiene informazioni su quando attivarla, le dipendenze, ecc.
.device Un device viene gestito da systemd in genere se è attivato da udev o sysfs.
.taget

Servizi enabled, disabled, masked, ...

Le due condizioni più comuni per un servizio sono enabled o disabled, a seconda che debba essere avviato automaticamente al boot oppure no.

La condizione masked di alcuni unit file è equivalente a disabled, ma previene anche l'avvio manuale del servizio. Se un file è disabled i suoi link simbolici sono rimossi, se è masked esso viene linkato a /dev/null.

doc/appunti/linux/sa/systemd.1510046561.txt.gz · Last modified: 2017/11/07 10:22 by niccolo