Tutorial introductorio a Systemd: Parte de comandos

Tutorial de introducción a Systemd: Parte práctica

Tutorial introductorio a Systemd: Parte de comandos

Autor: Ruan Yifeng

Fecha: 7 de marzo de 2016

Systemd es una herramienta del sistema Linux utilizada para iniciar. proceso de supervisión se ha convertido en la configuración estándar de la mayoría de las distribuciones.

Este artículo presenta su uso básico, dividido en dos partes. Hoy se introducen sus comandos principales. Siguiente artículo. Introducir cómo se utiliza en la práctica. img

1. Origen

A lo largo de la historia, El arranque de Linux siempre adoptando init Proceso.

El siguiente comando se utiliza para iniciar el servicio.

Este método tiene dos desventajas.

Uno es el largo tiempo de inicio. init Los procesos se inician de manera secuencial; solo se inicia el siguiente proceso una vez que el anterior ha finalizado.

En segundo lugar, el script de inicio es complejo. init El proceso solo ejecuta el script de inicio, sin preocuparse por otras cosas. El script necesita manejar diversas situaciones por sí mismo, lo que a menudo hace que el script sea muy largo.

II. Resumen de Systemd

Systemd nació para resolver estos problemas. Su objetivo de diseño es proporcionar una solución completa para el arranque y la gestión del sistema.

Según la convención de Linux, la letra d Es la abreviatura de "daemon". El significado del nombre Systemd es que debe cuidar todo el sistema.

img

(La imagen de arriba es del autor de Systemd) Lennart Poettering

Si se utiliza Systemd, no es necesario usar más. init Systemd reemplazó a initd se convierte en el primer proceso del sistema (PID igual a 1), y los otros procesos son sus procesos.

El comando anterior muestra la versión de Systemd.

Systemd 的优点是功能强大,使用方便,缺点是体系庞大,非常复杂。事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合,违反"keep simple, keep stupid"的 Filosofía de Unix img

(La imagen de arriba es el diagrama de arquitectura de Systemd)

Tres, gestión del sistema.

Systemd no es un comando, sino un conjunto de comandos que abarca todos los aspectos de la gestión del sistema.

3.1 systemctl

systemctl Es el comando principal de Systemd, utilizado para gestionar el sistema.

3.2 systemd-analyze

systemd-analyze El comando se utiliza para ver el tiempo de arranque.

3.3 hostnamectl

hostnamectl El comando se utiliza para ver la información del host actual.

3.4 localectl

localectl El comando se utiliza para ver la configuración de localización.

3.5 timedatectl

timedatectl El comando se utiliza para ver la configuración de la zona horaria actual.

3.6 loginctl

loginctl El comando se utiliza para ver los usuarios actualmente conectados.

cuatro, unidad

4.1 Significado

Systemd puede gestionar todos los recursos del sistema. Los diferentes recursos se denominan en conjunto Unidades.

La unidad se divide en un total de 12 tipos.

  • Unidad de servicio: servicio del sistema
  • Unidad objetivo: un grupo compuesto por múltiples unidades.
  • Unidad de dispositivo: hardware
  • Mount Unit: Punto de montaje del sistema de archivos
  • Unidad de automontaje: punto de montaje automático
  • Unidad de ruta: archivo o ruta
  • Unidad de ámbito: Proceso externo no iniciado por Systemd.
  • Unidad de corte: Grupo de procesos
  • Unidad de instantánea: instantánea de Systemd, se puede volver a un cierto instantánea.
  • Socket Unit: socket de comunicación entre procesos
  • Unidad de intercambio: archivo swap
  • Unidad de temporizador: temporizador

systemctl list-units El comando puede mostrar todas las unidades del sistema actual.

Estado de la unidad 4.2

systemctl status El comando se utiliza para ver el estado del sistema y el estado de una unidad individual.

excepto status orden, systemctl También se proporcionaron tres métodos simples para consultar el estado, principalmente para su uso en declaraciones de juicio internas del script.

4.3 Gestión de Unidad

Para los usuarios, los comandos más utilizados son los siguientes, que se utilizan para iniciar y detener unidades (principalmente servicios).

4.4 Relaciones de dependencia

Existen relaciones de dependencia entre las unidades: si A depende de B, significa que Systemd iniciará B al mismo tiempo que inicia A.

systemctl list-dependencies Ordena listar todas las dependencias de una unidad.

En la salida del comando anterior, algunas dependencias son del tipo Target (ver más abajo), que por defecto no se mostrarán. Si deseas expandir Target, necesitas usar --all Parámetro.

Cinco, el archivo de configuración de Unit.

5.1 Resumen

Cada unidad tiene un archivo de configuración que indica a Systemd cómo iniciar esa unidad.

El directorio predeterminado de Systemd /etc/systemd/system/ Leer el archivo de configuración. Sin embargo, la mayoría de los archivos almacenados en él son enlaces simbólicos que apuntan a directorios. /usr/lib/systemd/system/ El archivo de configuración real se encuentra en ese directorio.

systemctl enable El comando se utiliza para establecer una relación de enlace simbólico entre los dos directorios mencionados.

si el archivo de configuración está configurado para iniciar al arrancar, systemctl enable El comando equivale a activar el inicio automático.

correspondientemente, systemctl disable El comando se utiliza para revocar la relación de enlace simbólico entre dos directorios, lo que equivale a desactivar el inicio automático.

La extensión del archivo de configuración es el tipo de esa Unidad, por ejemplo, sshd.socket Si se omite, la extensión predeterminada de Systemd es. .service por lo tanto sshd será entendido como sshd.service

5.2 Estado del archivo de configuración

systemctl list-unit-files El comando se utiliza para listar todos los archivos de configuración.

Este comando generará una lista.

Esta lista muestra el estado de cada perfil, que puede ser de cuatro tipos.

  • habilitado: enlace de inicio establecido
  • deshabilitado: no se ha establecido el enlace de inicio.
  • static: Este archivo de configuración no existe. [Install] Parte (no se puede ejecutar), solo puede actuar como una dependencia de otros archivos de configuración.
  • El archivo de configuración tiene prohibido establecer un enlace de inicio.

Nota: No se puede determinar desde el estado del archivo de configuración si esta unidad está en funcionamiento. Esto debe realizarse según lo mencionado anteriormente. systemctl status Orden.

Una vez que se modifique el archivo de configuración, es necesario hacer que SystemD recargue el archivo de configuración y luego reiniciarlo; de lo contrario, los cambios no tendrán efecto.

5.3 Formato del archivo de configuración

El archivo de configuración es un archivo de texto común que se puede abrir con un editor de texto.

systemctl cat El comando puede ver el contenido del archivo de configuración.

A partir de la salida anterior, se puede ver que el archivo de configuración se divide en varios bloques. La primera línea de cada bloque se representa con un nombre distintivo entre corchetes, como por ejemplo. [Unit] Nota: los nombres de los bloques y los nombres de los campos en el archivo de configuración son sensibles a mayúsculas y minúsculas.

Dentro de cada bloque hay pares clave-valor conectados por signos de igual.

5.4 Bloques de configuración del archivo

[Unit] El bloque de configuración suele ser el primer bloque del archivo de configuración, utilizado para definir los metadatos de la Unidad y las relaciones con otras Unidades. Sus principales campos son los siguientes.

  • Dsecription Descripción breve
  • Documentation Dirección del documento
  • Requires La unidad actual depende de otras unidades, y si estas no están en funcionamiento, la unidad actual no podrá iniciarse.
  • Wants : Las otras unidades que trabajan en conjunto con la unidad actual no harán que la unidad actual falle al iniciar si no están en funcionamiento.
  • BindsTo y Requires De manera similar, si la Unidad especificada sale, provocará que la Unidad actual deje de funcionar.
  • Before Si la unidad especificada por este campo también debe iniciarse, debe iniciarse después de la unidad actual.
  • After Si la unidad especificada en este campo también debe iniciarse, debe iniciarse antes de la unidad actual.
  • Conflicts La Unidad especificada aquí no puede ejecutarse al mismo tiempo que la Unidad actual.
  • Condition... Las condiciones que deben cumplirse para que la unidad funcione actualmente, de lo contrario no se ejecutará.
  • Assert... Las condiciones que debe cumplir la unidad en funcionamiento, de lo contrario se informará un error de inicio.

[Install] Normalmente es el último bloque del archivo de configuración, utilizado para definir cómo iniciar y si se debe iniciar al encender el equipo. Sus campos principales son los siguientes.

  • WantedBy Su valor es uno o más Targets, y cuando la Unidad está activada (enable), el enlace simbólico se colocará. /etc/systemd/system Bajo el índice, con Nombre del objetivo + .wants en el subdirectorio formado por el sufijo
  • RequiredBy Su valor es uno o más Target, cuando la Unidad actual está activada, el enlace simbólico se coloca en. /etc/systemd/system Bajo el índice, con Nombre del objetivo + .required en el subdirectorio formado por el sufijo
  • Alias Alias que se puede usar para iniciar la unidad actual.
  • Also Cuando la unidad está activada (enable), se activarán simultáneamente otras unidades.

[Service] El bloque de configuración para el Service, solo está presente en las unidades de tipo Service. Sus principales campos son los siguientes.

  • Type Define el comportamiento del proceso al iniciar. Tiene los siguientes valores.
  • Type=simple Valor predeterminado, ejecutar. ExecStart Comando designado, iniciar el proceso principal.
  • Type=forking Se crea un proceso hijo desde el proceso padre de manera fork, y después de la creación, el proceso padre se cerrará inmediatamente.
  • Type=oneshot Proceso de una sola vez, Systemd esperará a que el servicio actual salga antes de continuar con la ejecución.
  • Type=dbus El servicio actual se inicia a través de D-Bus.
  • Type=notify El servicio actual se ha iniciado y se notificará. Systemd Continuar ejecutando.
  • Type=idle Si hay otras tareas que se han completado, el servicio actual solo se ejecutará entonces.
  • ExecStart : Comando para iniciar el servicio actual.
  • ExecStartPre Comando que se ejecuta antes de iniciar el servicio actual.
  • ExecStartPost Comando que se ejecuta después de iniciar el servicio actual.
  • ExecReload Comando ejecutado al reiniciar el servicio actual.
  • ExecStop Comando ejecutado al detener el servicio actual.
  • ExecStopPost : Detener el comando que se ejecuta después de su servicio.
  • RestartSec Intervalo de segundos para reiniciar automáticamente el servicio actual.
  • Restart Definir en qué situaciones Systemd reiniciará automáticamente el servicio actual, los valores posibles incluyen: always (Siempre reiniciando) on-success on-failure on-abnormal on-abort on-watchdog
  • TimeoutSec Definir el número de segundos que Systemd espera antes de detener el servicio actual.
  • Environment : Establecer variable de entorno

Para la lista completa de campos de configuración de la unidad, consulte. documentación oficial

Seis, Objetivo

Al iniciar la computadora, es necesario activar una gran cantidad de unidades. Si cada vez que se inicia hay que especificar cuáles unidades se necesitan, resulta evidentemente muy incómodo. La solución de Systemd es el Target.

简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说,Target这个概念类似于"状态点",启动某个 Target 就好比启动到某种状态。

tradicional init En el modo de inicio, existe el concepto de RunLevel, que tiene una función similar a la de Target. La diferencia es que el RunLevel es excluyente, no es posible que se inicien múltiples RunLevel al mismo tiempo, mientras que múltiples Target pueden iniciarse simultáneamente.

La correspondencia entre Target y los niveles de ejecución tradicionales es la siguiente.

Lo tiene con init Las principales diferencias entre los procesos son las siguientes.

(1) Nivel de ejecución predeterminado (en) /etc/inittab La configuración del archivo) ahora ha sido reemplazada por el Target predeterminado, la ubicación es /etc/systemd/system/default.target , normalmente el enlace simbólico a graphical.target (interfaz gráfica) o multi-user.target (Interfaz de línea de comandos multiusuario).

(2) Ubicación del script de inicio antes era /etc/init.d Directorio, enlaces simbólicos a diferentes directorios de RunLevel (por ejemplo, /etc/rc3.d /etc/rc5.d ahora se almacena en /lib/systemd/system y /etc/systemd/system Índice.

(3) Ubicación del archivo de configuración antes init El archivo de configuración del proceso es /etc/inittab Los archivos de configuración de varios servicios se almacenan en /etc/sysconfig Directorio. Los archivos de configuración actuales se almacenan principalmente en /lib/systemd Índice, en /etc/systemd Las modificaciones en el directorio pueden sobrescribir la configuración original.

Siete, gestión de registros.

Systemd gestiona de manera unificada los registros de inicio de todas las unidades. La ventaja de esto es que se puede utilizar únicamente journalctl Un comando para ver todos los registros (registros del núcleo y registros de aplicaciones). El archivo de configuración de los registros es /etc/systemd/journald.conf

journalctl Es potente y tiene muchas aplicaciones.

(Fin)

Información del documento

  • Declaración de derechos de autor: Reproducción libre - No comercial - No derivado - Mantener la atribución. Licencia Creative Commons 3.0 )
  • Fecha de publicación: 7 de marzo de 2016

Recientemente has utilizado:

Coleccionar Menú QQ