El comando systemd-analyze se usa para recuperar estadísticas de rendimiento para las operaciones de arranque. El comando toma uno o más subcomandos que determinan qué tipo de información imprimir y cómo. Para la gestión de procesos y la resolución de problemas, la culpa es el subcomando más relevante. Esto imprimirá una lista de todas las unidades systemd que se ejecutaron en el arranque, junto con el tiempo que tardó en ejecutarse cada unidad. Puede usar systemd-analyze reproche para identificar los servicios y otras unidades que hacen que el sistema arranque lento.
Sintaxis
La sintaxis del comando systemd-analyze es:
# systemd-analyze [options] [subcommand]
El comando systemd-analyze se puede utilizar para obtener información sobre cuánto tardó en iniciarse cada servicio. systemd-analyze time puede proporcionar información general sobre cuánto tiempo tardó el sistema en iniciarse. Aquí hay un comando que muestra claramente el tiempo que tarda el kernel, el initrd y el espacio de usuario durante el arranque.
# systemd-analyze time Startup finished in 1.267s (kernel) + 6.798s (initrd) + 1min 2.139s (userspace) = 1min 10.205s
Para averiguar cuánto tiempo tardó cada unidad en iniciarse, ejecute systemd-analyze Blau.
# 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
Como ve, la salida se ordena según el tiempo que tarda cada unidad, puede averiguar fácilmente qué servicio está tardando más durante el arranque y puede profundizar más para analizar el problema.
En ciertos pasos, el arranque no puede continuar hasta que se satisfagan todas las dependencias de la unidad. Para ver las unidades en estos puntos críticos, ejecute 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
La imagen gráfica SVG se puede trazar y contiene detalles sobre la hora de inicio de los servicios del sistema, destacando el tiempo que dedicaron a la inicialización. Asegúrese de haber habilitado el modo de visualización gráfica o tener las ventanas x habilitadas para ver el gráfico.
# systemd-analyze plot > plot.svg # eog plot.svg
Aquí hay un recorte de un gráfico de muestra en mi máquina CentOS 7. Haz zoom para ver la cascada con claridad.
Ejemplos de comandos systemd-analyze
1. Indique el tiempo de puesta en marcha de cada unidad:
# systemd-analyze blame
2. Imprima un árbol de la cadena de unidades de tiempo crítico:
# systemd-analyze critical-chain
3. Cree un archivo SVG que muestre cuándo se inició cada servicio del sistema, resaltando el tiempo que dedicaron a la inicialización:
# systemd-analyze plot > path/to/file.svg
4. Trace un gráfico de dependencia y conviértalo en un archivo SVG:
# systemd-analyze dot | dot -Tsvg > path/to/file.svg
5. Muestra las puntuaciones de seguridad de las unidades en ejecución:
# systemd-analyze security