Systemd
Systemd è il gestore di ogni oggetto dopo l'avvio del kernel.
Gli oggetti gestiti si chiamano unit e possono essere divisi in servizi, mounts o timers.
L'interfaccia usata per gestire systemd è SYSTEMCTL.
Per visualizzare i tipi di unit:# systemctl -t help
Available unit types:
service
socket
busname
target
snapshot
device
mount
automount
swap
timer
path
slice
scope
Lista dei unit file
# systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-sys-fs-binfmt_misc.mount static
run-vmblock\x2dfuse.mount disabled
sys-fs-fuse-connections.mount static
service
socket
busname
target
snapshot
device
mount
automount
swap
timer
path
slice
scope
Lista dei unit file
# systemctl list-unit-files
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-sys-fs-binfmt_misc.mount static
run-vmblock\x2dfuse.mount disabled
sys-fs-fuse-connections.mount static
................
Lista di tutti i service unit file, se abilitati o no:
# systemctl list-unit-files -at service
La lista di tute le unit che sono running sul server:
# systemctl list-units
UNIT LOAD ACTIVE SUB DESCRIPTION
boot.mount loaded active mounted /boot
dev-hugepages.mount loaded active mounted Huge Pages File System
dev-mqueue.mount loaded active mounted POSIX Message Queue File System
proc-sys-fs-binfmt_misc.mount loaded active mounted Arbitrary Executable File Formats File System
run-user-0.mount loaded active mounted /run/user/0
Un System Administrator deve sapere gestire lo stato dei moduli:
enabled/disabled dice se il module deve essere avviato automaticamente al boot del server
start/stop per indicare lo stato runtime di un servizio.
# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Questo comando dice che il file di configurazione è
"/usr/lib/systemd/system/vsftpd.service" ed è disabilitato (disabled) e quindi non automaticamente avviato. Inoltre che il pacchetto di default è disabilitato dopo l'installazione "vendor preset: disabled".Attualmente è inattivo "Active: inactive (dead)"
Avviamo il servizio e poi verifichiamo lo stato.
# systemctl start vsftpd
# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2021-09-16 18:10:26 CEST; 3s ago
Process: 31905 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
Main PID: 31906 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─31906 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
Sep 16 18:10:26 coslab02.intra.camera.it systemd[1]: Starting Vsftpd ftp daemon...
Sep 16 18:10:26 coslab02.intra.camera.it systemd[1]: Started Vsftpd ftp daemon.
# systemctl enable vsftpd
Created symlink from /etc/systemd/system/multi-user.target.wants/vsftpd.service to /usr/lib/systemd/system/vsftpd.service.
Sotto /etc/... viene creato un symbolic link verso /usr/lib...
# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2021-09-16 18:10:26 CEST; 3min 50s ago
Main PID: 31906 (vsftpd)
CGroup: /system.slice/vsftpd.service
└─31906 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
-------------------------------
CONFIGURAZIONE
--------------------------------
Gli unit file di sistema sono cofigurati sotto /usr/lib/systemd/system.
Non modficiarli direttamente ma effettuare una copia sono /etc/systemd/system e modificarli qui perchè si sovrappongono a quelli originali.
Il modo migliore per modificarli è usare il comando
# systemctl edit <unit.servive>
Per visualizzare tutti i parametri disponibili:
# systmectl show <unit.servive>
Dopo le modifiche riavvviare i servizi
# systemctl daemon-reload
Ad esempio configurare il serivzio httpd che effettui il restart in automatico dopo 5s.
1) systemctl edit httpd.service
Inserire il segunete codice:
[Service]
Restart=always
RestartSec=5s
Selezionare sulla tastiera "Ctrl+X", poi "y" per confermare la modifica ed infine il tasto invio per uscire dalla modalità edit.
Viene creato il file /etc/systemd/system/httpd.service.d/override.conf
2) systemctl daemon-reload
3) systemctl show httpd.service
Verifica:
Killare i serivizi
# killall httpd
# ps aux | grep httpd
Verificare che il servizio è restarto in automatico:
# systemctl status httpd.service