Systemd depuis la 16.04

Systemd est la version linux de init system V. Fedora, Mageia, Open SUSE et Debian l'utilisent aussi. Les version précédent d'ubuntu utilisaient Upstart.

Systemd (depuis la 16.04) - https://doc.ubuntu-fr.org/systemd

Selon les versions de Ubuntu

de Ubuntu 6 à 12 : Upstart (gère taches systèmes et les services, par ex Plymouth, réseau... )

Systemd (depuis la 16.04). Version linux de init system V.

 

Systemd

Systemd gère aussi de plus le montage et "The Journal". Cf https://wiki.debian.org/systemd
A la notion d'unité : fichier de conf, service (*.service), une cible (*.target), un montage (*.mount), un socket (*.socket)…

Au boot, les services utilisent les options définies par défaut (que "systemctl start/stop/status/restart/reload service" ne modifient pas)

$ systemd --version
systemd 229
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN

J'ai la v229 en avril 2017.

liste des services démarrés:

systemctl list-unit-files | grep service | sort 

Que signifient les valeurs ? J'y vois du : enabled, disabled, static, masked, indirect (pour portmap.service, rpcbind.service, saned@.service et uuidd.service)

mask est plus fort que disable. Avec disable tous les liens symlinks du fichier unit (donné en arg) sont effacés. Avec mask les units vont vers /dev/null. C'est ce qui est montré par ex avec systemctl status halt.service. L'avantage de mask est d'éviter toute activation même manuelle.

list-units

$ systemctl list-units
UNIT                         LOAD   ACTIVE SUB     DESCRIPTION
atd.service                  loaded active running ATD daemon
avahi-daemon.service         loaded active running Avahi mDNS/DNS-SD Stack
...

avec:

  • UNIT/UNITÉ: Le systemd nom de l'unité
  • LOAD/CHARGE: La question de savoir si la configuration de l’appareil a été analysée par systemd. La configuration des unités chargées est gardée en mémoire.
  • ACTIVE: Un état récapitulatif pour savoir si l’unité est active. Il s'agit généralement d'une façon assez basique de dire si l'appareil a démarré avec succès ou pas.
  • SUB: Il s’agit d’un état de niveau inférieur qui indique plus d’informations sur l’unité (ex: running, plugged, mounted, waiting, exited, elapsed...). Cela varie souvent par type d'unité, État, et la méthode actuelle, dans laquelle l'appareil fonctionne.
  • DESCRIPTION: Une courte description de ce que l’unité est/ne.

 

$ systemctl list-units | grep service | sort                                                                               

accounts-daemon.service          loaded active running   Accounts Service
...
user@1000.service                loaded active running   User Manager for UID 1000
vboxautostart-service.service    loaded active exited    LSB: VirtualBox autostart service
vboxballoonctrl-service.service  loaded active exited    LSB: VirtualBox watchdog daemon
vboxdrv.service                  loaded active exited    LSB: VirtualBox Linux kernel module
vboxweb-service.service          loaded active exited    LSB: VirtualBox web service API
vmware.service                   loaded active running   LSB: starts and stops VMware services
vmware-USBArbitrator.service     loaded active running   LSB: starts and stops the USB Arbitrator
whoopsie.service                 loaded active running   crash report submission daemon

 

logs "The Journal"

Voir les log (the journal) : journalctl
consulter les messages d'un seul service par son nom, son PID ou même son exécutable :

journalctl -u wicd
journalctl _PID=1
journalctl /usr/sbin/dhcpcd

journalctl permet aussi de filtrer par le niveau de log (tel que défini par syslog). Pour n'afficher que les erreurs : journalctl -p err
Il existe un logiciel graphique nommé Gnome-logs

systemctl status <nom_du_service> montre aussi les logs récents

systemd-analyze

liste des services lancés au démarrage, triés selon leur temps d’exécution : systemd-analyze blame

Légende de systemd-analyze plot &gt; plot.svgavoir un graphique: systemd-analyze plot > plot.svg
La légende, en bas à gauche n'est pas facilement trouvable, mais c'est hyper utile :) La 1ere fois, l'abscisse montre que cela dure 53s.

 

systemctl

  • désactiver/activer un service (au boot suivant) : systemctl disable <Nom_du_service>.service   /   systemctl enable <Nom_du_service>.service
  • voir l'arborescence des dépendances de l'unité : systemctl show sshd.service
  • voir les actifs et non-actifs : systemctl --all
 
$ systemctl --failed
0 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

Modifier

si vous souhaitez modifier l'état d'un service selon certaines conditions, vous devrez modifier ou créer le fichier /etc/systemd/system/<nom_du_service>.service. Les fichiers de configuration par défaut se trouvent dans /lib/systemd/system/

 

Plus sur le web

de 2015 : http://www.tecmint.com/manage-services-using-systemd-and-systemctl-in-li...

https://www.freedesktop.org/wiki/Software/systemd/

https://websetnet.com/fr/manage-systemd-services-and-units/
http://cavepopo.hd.free.fr/wordpress/linux/bash-command-tips-systemctl/

systemd-analyze plot > plot.svg montre le temps en abs et le travail de systemd