Question :Mon système met beaucoup de temps à démarrer. Comment puis-je savoir quels services mettent du temps à démarrer ?
Réponse :
systemd-analyse La commande peut être utilisée pour trouver des informations sur la durée de démarrage de chaque service. temps d'analyse systemd peut fournir des informations générales sur le temps qu'il a fallu au système pour démarrer. Voici une commande out qui montre clairement le temps pris par le noyau, initrd et l'espace utilisateur lors du démarrage.
# systemd-analyze time Startup finished in 1.267s (kernel) + 6.798s (initrd) + 1min 2.139s (userspace) = 1min 10.205s
Pour savoir combien de temps chaque unité a mis à démarrer, exécutez systemd-analyze blame .
# systemd-analyze blame 24.728s dev-mapper-centosx2droot.device 15.135s kdump.service 14.670s plymouth-quit-wait.service 14.210s firewalld.service 9.835s accounts-daemon.service 7.383s ModemManager.service 7.259s libvirtd.service 7.257s systemd-logind.service 7.177s ksm.service 7.081s gssproxy.service 7.067s avahi-daemon.service 7.062s rsyslog.service 7.039s abrt-ccpp.service
Comme vous voyez que la sortie est triée en fonction du temps pris par chaque unité, vous pouvez facilement savoir quel service prend le plus de temps lors du démarrage et creuser plus profondément pour analyser le problème.
À certaines étapes, le démarrage ne peut pas se poursuivre tant que toutes les dépendances de l'unité ne sont pas satisfaites. Pour voir les unités à ces points critiques, exécutez systemd-analyze critical-chain .
# systemd-analyze critical-chain The time after the unit is active or started is printed after the "@" character. The time the unit takes to start is printed after the "+" character. graphical.target @1min 2.102s └─multi-user.target @1min 2.102s └─abrt-vmcore.service @1min 1.228s +872ms └─kdump.service @46.090s +15.135s └─remote-fs.target @46.086s └─remote-fs-pre.target @46.083s └─iscsi-shutdown.service @45.951s +99ms └─network.target @45.944s └─network.service @44.959s +975ms └─NetworkManager.service @38.653s +689ms └─firewalld.service @24.439s +14.210s └─basic.target @23.850s └─sockets.target @23.849s └─cups.socket @23.847s └─sysinit.target @23.618s └─systemd-update-utmp.service @23.603s +13ms └─auditd.service @22.959s +643ms └─systemd-tmpfiles-setup.service @22.726s +230ms └─rhel-import-state.service @22.431s +294ms └─local-fs.target @22.428s └─boot.mount @19.675s +2.126s └─dev-disk-byx2duuid-7de2053cx2d44d7x2d4f33x2db522x2d81dee2f6b69b.device @19.652s
L'image graphique SVG peut être un tracé contenant des détails sur l'heure de démarrage des services système, mettant en évidence le temps passé à l'initialisation. Assurez-vous d'avoir activé le mode d'affichage graphique ou d'avoir activé x-windows afin de voir le tracé.
# systemd-analyze plot > plot.svg # eog plot.svg
Voici un extrait d'un exemple de tracé sur ma machine CentOS 7. Zoomez pour vérifier clairement la cascade.