Inauguriamo con systemctl un ciclo di articoli tecnici su SystemD.
systemctl é il tool con cui gestiamo gran parte degli aspetti di SystemD e va a sostituire gran parte delle funzioni dei comandi service e chkconfig. Vedremo qui come analizzare lo stato del sistema, gestire lo stato della macchina e – aspetto forse piú importante – gestire le units.
TIP aggiungendo -H user@host possiamo eseguire il comando su una macchina remota via ssh.
Analizzare lo stato del sistema
Se volevamo vedere lo stato dei servizi attivi sulla macchina con avremmo usato il comando:
service --status-all |
Con systemctl invece possiamo dare il comando senza alcun parametro, oppure per visualizzare solo i servizi che hanno dato errore diamo il comando con il parametro –failed.
systemctl # gdm.service loaded active running GNOME Display Manager # gpm.service loaded active running Console Mouse manager # irqbalance.service loaded active running irqbalance daemon systemctl --failed # UNIT LOAD ACTIVE SUB DESCRIPTION # mcelog.service loaded failed failed Machine Check Exception Logging Daemon # rngd.service loaded failed failed Hardware RNG Entropy Gatherer Daemon # # LOAD = Reflects whether the unit definition was properly loaded. # ACTIVE = The high-level unit activation state, i.e. generalization of SUB. # SUB = The low-level unit activation state, values depend on unit type. # # 2 loaded units listed. Pass --all to see loaded but inactive units, too. # To show all installed unit files use 'systemctl list-unit-files'. |
Dalle estensioni del nome, vedrete che ci saranno diversi tipi di units: .automount, .mount, .device, .service etc etc. Vedremo piú avanti di cosa esattamente si tratta, vi basti sapere che i daemon sono quelli con estensione .service.
Gestione dei servizi
Vediamo ora come sostituire i vecchi comandi
service myservice [start|stop|restart|status] chkconfig myservice [on|off] |
Abbiamo detto che i servizi hanno estensione .service, quindi myservice verrá ora chiamato myservice.service.
Iniziamo con l’abilitare il servizio:
systemctl enable httpd.service # ln -s '/usr/lib/systemd/system/httpd.service' '/etc/systemd/system/multi-user.target.wants/httpd.service' |
Adesso il servizio Apache verrá avviato all’avvio. Allo stesso modo usiamo il comando disable per disabilitarlo.
Ora vedremo come studiarne lo stato, avviare e fermare il servizio.
systemctl status httpd.service # httpd.service - The Apache HTTP Server # Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled) # Active: inactive (dead) systemctl start httpd.service systemctl status httpd.service # httpd.service - The Apache HTTP Server # Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled) # Active: active (running) since Tue 2014-02-25 08:39:56 CET; 16s ago # Main PID: 18285 (httpd) # Status: "Total requests: 0; Current requests/sec: 0; Current # traffic: 0 B/sec" # CGroup: /system.slice/httpd.service # ├─18285 /usr/sbin/httpd -DFOREGROUND # ├─18286 /usr/sbin/httpd -DFOREGROUND # ├─18287 /usr/sbin/httpd -DFOREGROUND # ├─18288 /usr/sbin/httpd -DFOREGROUND # ├─18289 /usr/sbin/httpd -DFOREGROUND # └─18290 /usr/sbin/httpd -DFOREGROUND # # Feb 25 08:39:56 alorenzi-vaio.local systemd[1]: Started The Apache HTTP Server. systemctl stop httpd.service |
Notate quanti dettagli restituisce systemctl service quando il servizio é attivato: non solo mostra se il servizio é acceso o spento, ma anche il PID, il cgroup, e anche le ultime righe di log del servizio.
Gestione energetica
Possiamo anche utilizzare systemd per riavviare, spegnere, sospendere e ibernare la macchina, rispettivamente:
systemctl reboot
systemctl poweroff
systemctl suspend
systemctl hibernate |
Se utilizziamo il tool polkit anche gli utenti saranno in grado di utilizzare il power management di systemctl senza dover inserire alcuna password e senza configurare sudo. Su Fedora gli utenti amministratori sono giá configurati per poter utilizzare queste funzioni.