systemd
Última actualització: agost de 2019
Cap al 2014 systemd va arribar a Debian i ara mateix el fan servir gairebé totes les distribucions derivades de Debian.
La documentació oficial diu que "systemd és un sistema i administrador de serveis per a Linux, compatible amb scripts d'inici (init) SysV i LSB. systemd proporciona capacitats de paral·lelització agressives, utilitza socket i activació D-Bus per iniciar els serveis, ofereix la posada en marxa de dimonis sota demanda, realitza el seguiment de processos utilitzant Linux cgroups, suporta còpia instantània de volum i la restauració d'estat del sistema , manté punts de muntatge i automuntatge i implementa un elaborat servei lògic de control transaccional basat en la dependència. Pot funcionar com un reemplaçament per sysvinit".
En altres paraules, systemd va substituir a init com a dimoni "pare" de tots els processos, el que vol dir que pren el control des del primer moment ja que tots els processos en execució penjen d'ell. A partir de que arrenca, systemd controla tot el que passa al sistema. El mateix que el fa interessant (controlar i gestionar tot el sistema) el fa "perillós" des del punt de vista de que tenim tots els ous a la cistella de systemd.
systemd treballa amb "units". Units son, per exemple: services (.service), mount points (.mount), devices (.device) or sockets (.socket).
Nom de les units
*serveis: s'anomenen .service, per exemple ntpd.service. Ens podem estalviar el punt .service final i el sistema el posarà per nosaltres. P.e. systemctl enable ntpd és el mateix que dir: systemctl enable ntpd.service
- punts de muntatge: si volem muntar /home, ho farem amb el nom home.mount
- dispositius: el dispositiu /dev/sda1 l'anomenarem com dev-sda1
Veure informació de systemd
- Si volem veure totes les units que tenim disponibles:
systemctl list-unit-files
- Només units que estan en marxa:
systemctl
és el mateix que:
systemctl list-units
- Units que han fallat:
systemctl --failed
- Mostra quin és el default target (el que antigament es deia runlevel per defecte):
systemctl get-default
- Veure les dependències de les units:
systemctl list-dependencies
- Veure els sockets i que activen:
systemctl list-sockets
Treballant amb els serveis
- Gestió amb interfície gràfica:
systemadm
- Habilitar una unit:
systemctl enable -f unit
- Reiniciar una unit:
systemctl restart unit
- Veure propietats d'un service (o una unit):
systemctl show service
- Matar tots els procesos relatius a un servei:
systemctl kill service
Canviar l'estat del sistema:
systemctl reboot
systemctl poweroff
systemctl suspend
systemctl hibernate
systemctl hybrid-sleep
systemctl emergency (equival a init 1)
systemctl default (anem al mode normal; multiusuari)
Informació del sistema
*Informació detallada hostname:
hostnamectl
*Informació detallada sobre dia i hora:
timedatectl
Logs
systemd te el seu propi servei de logs i per tant els equips que corren systemd no precisen del dimoni syslog.
- Per a llegir el log:
journalctl
- Logs de l'últim arranc:
journalctl -b
- Logs del penúltim arranc:
journalctl -b -1
- Logs des de una data i hora determinada:
journalctl --since="2014-1-1 15:30"
- Logs des de fa 20 minuts o de l'ultim dia:
journalctl --since="20 min ago"
journalctl --since=today
- Anar veient els últims logs:
journalctl -f
- Si volem enviar els logs al tty10, hem de posar aquestes línies a /etc/systemd/journald.conf:
ForwardToConsole=yes
TTYPath=/dev/tty10
MaxLevelConsole=info
Hem de reiniciar el sevei per a que sigui efectiu: systemctl restart systemd-journald
- Veure els missatges generats per un binary específic:
journalctl /usr/lib/systemd/systemd
- Veure els missatges generats per un procés específic:
journalctl _PID=1
Per a veure el PID d'un servei determinat, p.e. el podem reiniciar (en aquell moment ens diu el PID o bé obtenir amb systemctl status.
- Veure els missatges d'una unit específica:
journalctl -u netcfg
Tags: Debian, start, arranque, boot, systemd, initd, initrd, arrancada, runlevel, init, telinit, devuan, antix