Configuración de Linux Systemd para iniciar automáticamente en el arranque

Directorio de blogs


sistemad

Systemd es un sistema de inicio para iniciar, administrar y monitorear sistemas Linux. Es el sistema de inicialización predeterminado en muchas distribuciones modernas de Linux, reemplazando a los tradicionales SysVinit y Upstart.

La introducción de Systemd causó cierta controversia en la comunidad Linux porque es muy diferente del sistema de inicialización tradicional. Sin embargo, sus objetivos de diseño y características hacen que la administración y el mantenimiento de sistemas Linux sean más eficientes y convenientes. Se ha convertido en la opción estándar para muchas distribuciones de Linux convencionales y ha sido ampliamente utilizado y respaldado.

Systemd está diseñado para proporcionar un inicio más rápido, una mejor gestión de recursos y capacidades de monitoreo del sistema más poderosas. Introduce algunos conceptos y características nuevos, incluidos los siguientes aspectos principales:

  • Unidad: Systemd utiliza Unidad como unidad básica de los componentes del sistema. La unidad puede ser un servicio, un enchufe, un dispositivo, un soporte, etc. Cada unidad tiene un archivo de configuración correspondiente que describe su comportamiento y dependencias.
  • Gestión de dependencias: Systemd puede resolver automáticamente dependencias entre unidades. Cada unidad puede especificar otras unidades de las que depende, y Systemd iniciará o detendrá automáticamente la unidad según sea necesario en función de las dependencias.
  • Inicio paralelo: Systemd admite el inicio paralelo de unidades del sistema para mejorar la velocidad de inicio del sistema. Puede maximizar la utilización de los recursos del sistema y acelerar el proceso de inicio procesando las dependencias de las unidades en paralelo.
  • Gestión de registros: Systemd presenta el sistema Journal para gestionar y almacenar registros del sistema. Journal proporciona registros estructurados y funciones eficientes de consulta de registros, lo que facilita verificar el estado de ejecución del sistema y solucionar problemas.
  • Gestión de servicios: Systemd proporciona potentes funciones de gestión de servicios que pueden iniciar, detener, reiniciar y gestionar los servicios del sistema. Admite funciones como reinicio automático de servicios, monitoreo de procesos y recuperación de fallas, mejorando la confiabilidad y disponibilidad del sistema.
  • Interfaz de control: Systemd proporciona herramientas de línea de comando e interfaces de control para administrar y monitorear el sistema. A través del comando systemctl, puede ver y controlar el estado de la unidad, iniciar y detener servicios, ver registros del sistema, etc.

La experiencia más intuitiva es que arrancar a través del programa de configuración Systemd será muy simple y unificado, y la experiencia es muy buena.

Método de operación

# 所有指令都可以省略 后缀 .service, 如 systemctl enable myapp
# 设置开机自启
systemctl enable myapp.service
# 取消开机自启
systemctl disable myapp.service
# 启动
systemctl start myapp
# 停止
systemctl stop myapp
# 重载
systemctl reload myapp

Método de configuración

Debe crear un archivo de unidad de servicio Systemd y especificar el comando o programa que se ejecutará al inicio.

Se dice que solo los programas instalados a través del modo binario necesitan crear manualmente archivos de unidades de servicio Systemd, como xxxx.service. Los programas instalados a través de yum, etc., vendrán con el archivo y lo colocarán automáticamente en la ubicación adecuada. Puede ejecutarlo directamente systemctl habilitar xxxx.service para habilitar

Cree un archivo de unidad de servicio: cree un archivo de unidad de servicio con sufijo en /etc/systemd/system/el directorio o , como myapp.service./usr/lib/systemd/system.service

Edite el archivo de la unidad de servicio: use un editor de texto para abrir el archivo de la unidad de servicio que acaba de crear y pegue el siguiente contenido en el archivo:

[Unit]
Description=My App
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
ExecStart=/path/to/your/app
Restart=always
User=your_username
Group=your_groupname
Environment="PATH=/usr/bin" "ANOTHER_ENV_VAR=some_value"

Realice las modificaciones adecuadas según las necesidades reales:

Descripción: Descripción del servicio.
Después: especifica las dependencias para el inicio del servicio. Si la aplicación requiere conectividad de red, configúrela en network.target.
ExecStart: especifica la ruta completa del comando o programa que se ejecutará al inicio. Reemplace /ruta/a/su/aplicación con la ruta a su comando o programa real.
Reiniciar: configure el servicio para que se reinicie automáticamente cuando ocurra un problema.
Usuario y grupo: especifique el usuario y el grupo que ejecuta el servicio. Reemplace su_nombre de usuario y su_nombre de grupo con sus nombres reales de usuario y grupo.
Entorno: establece variables de entorno. Puede agregar tantas variables de entorno como sea necesario.
WantedBy: especifica el nivel de ejecución al que pertenece el servicio. Reemplace multi-user.target con el nivel de ejecución deseado.

Guarde y cierre el archivo.

Vuelva a cargar la configuración de Systemd: ejecute el siguiente comando en la terminal para recargar la configuración de Systemd y habilitar el archivo de unidad de servicio recién creado:

systemctl daemon-reload  
systemctl enable myapp.service

Esto hará que Systemd cargue y ejecute automáticamente el servicio especificado al inicio.

Iniciar el servicio:

systemctl start myapp.service

Consultar estado del servicio:

systemctl status myapp.service

Si todo está bien, deberías ver el estado del servicio en verde "activo".

El servicio ahora está configurado para iniciarse automáticamente al arrancar. Systemd cargará y ejecutará automáticamente el servicio después del próximo reinicio del sistema.

Ejemplo de configuración

# mysql
# https://dev.mysql.com/doc/mysql-secure-deployment-guide/8.0/en/secure-deployment-post-install.html

[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

# Have mysqld write its state to the systemd notify socket
Type=notify

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0

# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf $MYSQLD_OPTS 

# Use this to switch malloc implementation
EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 10000

Restart=on-failure

RestartPreventExitStatus=1

# Set environment variable MYSQLD_PARENT_PID. This is required for restart.
Environment=MYSQLD_PARENT_PID=1

PrivateTmp=false
# redis
[Unit]
Description=Redis Server
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
ExecStart=/usr/local/bin/redis-server /usr/local/bin/redis.conf
Type=forking
PrivateTmp=true
# tomcat
[Unit]
Description=Tomcat 8.5.70
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
ExecStart=/usr/local/bid/apache-tomcat-8.5.70/bin/startup.sh
Type=forking
PrivateTmp=true

referencia

Documento oficial Manual de referencia de MySQL 8.0 - Instalación de MySQL en Linux - Uso de Systemd para administrar MySQL - Asistente de implementación segura de MySQL 8.0 - Operaciones posteriores a la instalación - Uso de Systemd para iniciar MySQL Server

Supongo que te gusta

Origin blog.csdn.net/mrathena/article/details/133128220
Recomendado
Clasificación