doc:appunti:linux:sa:systemd
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
doc:appunti:linux:sa:systemd [2016/05/13 16:43] – niccolo | doc:appunti:linux:sa:systemd [2018/10/08 12:56] – [Timeout in attesa di un device] niccolo | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Systemd ====== | ====== Systemd ====== | ||
+ | **[[wp> | ||
===== Comandi di servizio ===== | ===== Comandi di servizio ===== | ||
- | Quando si modifica qualche file di configurazione (ad esempio gli script | + | Quando si modifica qualche file di configurazione (ad esempio gli //unit files// |
< | < | ||
Line 27: | Line 28: | ||
</ | </ | ||
+ | Per **disabilitare** o **abilitare** un servizio (quindi creare i vari link simbolici ''/ | ||
+ | |||
+ | < | ||
+ | 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 ===== | ===== OpenVPN con systemd ===== | ||
Line 60: | Line 79: | ||
systemctl start 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 **/ | ||
+ | |||
+ | * **/ | ||
+ | * **/ | ||
+ | * **/ | ||
+ | |||
+ | Uno //unit file// può descrivere diversi tipi di risorsa, indicato dall' | ||
+ | |||
+ | ^ .service | In genere una applicazione (demone) che fornisce un servizio. Contiene informazioni su quando attivarla, le dipendenze, ecc. | | ||
+ | ^ .device | ||
+ | ^ .taget | ||
+ | |||
+ | ===== Servizi enabled, disabled, masked, ... ===== | ||
+ | |||
+ | Le due condizioni più comuni per un servizio sono **enabled** o **disabled**, | ||
+ | |||
+ | La condizione **masked** di alcuni **unit file** è equivalente a // | ||
+ | |||
+ | ===== Starting a service when a filesystem is available an mounted ===== | ||
+ | |||
+ | This solution was tested on **Debian 9 Stretch**. | ||
+ | |||
+ | We have a filesystem on an **external USB disk**, which is not guaranteed to be present at bootstrap; to avoid hangs or errors during bootstrap, we have the following in **/ | ||
+ | |||
+ | < | ||
+ | PARTUUID=92e84ecd-a306-44df-929b-... /data ext4 auto, | ||
+ | </ | ||
+ | |||
+ | If the USB disk is not plugged during bootstrap, the filesystem is not mounted and there are not blocking errors (due the **nofail** option). We want to start a service (actually the Kodi Media Center) only if the filesystem is mounted. The relevant lines in the unit file **/ | ||
+ | |||
+ | < | ||
+ | # See man systemd.unit for the following directives. | ||
+ | # This is equivalent of placing an " | ||
+ | RequiresMountsFor = /data | ||
+ | # When systemd starts or stops " | ||
+ | PartOf = data.mount | ||
+ | </ | ||
+ | |||
+ | In this way, the Kodi service is not started if the USB disk is not connected. If the device is connected at a later time, the filesystem is automatically mounted and the Kodi service is automatically started. | ||
+ | |||
+ | |||
+ | ===== Modificare Ctrl-Alt-Del con Systemd ===== | ||
+ | |||
+ | Con il vecchio sistema di init **sysvinit** l' | ||
+ | |||
+ | Nelle nuove versioni di Debian si utilizza **systemd** per l'init del sistema, il vecchio file di configurazione non esiste più. Ecco come associare un **poweroff** invece di un **reboot**: | ||
+ | |||
+ | < | ||
+ | ln -s / | ||
+ | </ | ||
+ | |||
+ | === Spiegazione === | ||
+ | |||
+ | Le operazioni predefinite sono definite dai file contenuti in **/ | ||
+ | |||
+ | < | ||
+ | ctrl-alt-del.target -> reboot.target | ||
+ | </ | ||
+ | |||
+ | Non è necessario modificare il contenuto di questa directory, si può fare un override creando il link simbolico opportuno nella directory **/ | ||
+ | ===== Timeout in attesa di un device ===== | ||
+ | |||
+ | Può capitare che il processo di **bootstrap fallisce** perché un device elencato in **/ | ||
+ | |||
+ | < | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ===== Verifica Servizi ===== | ||
+ | |||
+ | Alcuni comandi utili per **verificare il funzionamento** dei servizi gestiti da **systemd**. | ||
+ | |||
+ | Mostra lo stato di tutti i servizi e di tutte le unit | ||
+ | |||
+ | < | ||
+ | systemctl --all --full status | ||
+ | </ | ||
+ | |||
+ | Mostra le unit // | ||
+ | |||
+ | < | ||
+ | systemctl --all list-dependencies ntp.service | ||
+ | </ | ||
+ | |||
+ | ===== Riferimenti web ===== | ||
+ | |||
+ | * **[[https:// | ||
+ | Understanding Systemd Units and Unit Files]]** | ||
+ | * **[[https:// |
doc/appunti/linux/sa/systemd.txt · Last modified: 2023/12/13 12:37 by niccolo