
Cómo dominar los servicios Systemd personalizados en Linux: una guía completa
Systemd es un sistema de inicio dinámico y robusto en varias distribuciones de Linux. Facilita la ejecución de programas, la gestión de recursos y el control general del sistema. Esta guía le permitirá aprovechar todo el potencial de Systemd mediante la creación de unidades de servicio personalizadas en Ubuntu.
Comprensión de las unidades de servicio de Systemd
En esencia, una unidad de servicio es un archivo estandarizado que describe la configuración necesaria para ejecutar una aplicación específica. Encapsula metadatos sobre el programa, directivas de ejecución y detalles sobre el marco de acceso de Systemd durante las sesiones.
Cada demonio en un entorno compatible con Systemd está regido por un archivo de servicio. Por ejemplo, OpenSSH funciona utilizando la ssh.service
unidad ubicada en /etc/systemd/system/
para dictar su funcionamiento en sistemas Debian y Ubuntu.

En general, un archivo de unidad de servicio se estructura en tres secciones principales: Unit
, Service
y Install
. La Unit
sección indica los metadatos y las dependencias de la aplicación, mientras que la Service
sección especifica su ubicación y metodología de ejecución. En conclusión, la Install
sección aclara cuándo se puede iniciar la aplicación mediante Systemd.
Creación de un servicio personalizado a nivel de sistema
Los servicios personalizados son muy útiles para automatizar tareas que requieren privilegios elevados o que utilizan temporizadores de Systemd. Un ejemplo típico es garantizar que el servidor de Minecraft se inicie de manera confiable después de reiniciar el sistema.
Pasos para crear su servicio personalizado a nivel de sistema
- Cree el archivo de unidad Systemd: comience con la creación de un nuevo archivo de unidad en su directorio de inicio.
- Insertar configuración: agregue la siguiente plantilla dentro del nuevo archivo de unidad. Esto sirve como una configuración básica válida:
- Personaliza tu servicio: ajusta los campos
Description
yExecStart
con detalles pertinentes a tu servicio. - Mover el archivo: Guárdelo y transfiéralo al directorio de servicio:
- Recargar Systemd Daemon: Ejecute el comando para recargar los servicios:
- Inicie su servicio: Inicie su servicio personalizado a nivel de sistema:
- Verificar funcionalidad: Confirme que su servicio esté operativo:
nano ~/my-system-app.service
[Unit] Description=My First Service After=network.target [Service] Type=simple ExecStart=/path/to/bin Restart=always [Install] WantedBy=multi-user.target
sudo cp ~/my-system-app.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl start my-system-app.service
systemctl status my-system-app.service

Establecimiento de un servicio personalizado a nivel de usuario
Systemd admite la creación de servicios sin root utilizando Systemd-user, lo que permite a los usuarios no root manejar aplicaciones personales de manera efectiva y al mismo tiempo mejorar la seguridad al minimizar el acceso root.
Cómo crear su servicio personalizado a nivel de usuario:
- Configurar el archivo de unidad: Cree un nuevo archivo de unidad en el directorio de inicio.
- Insertar configuración básica: utilice el siguiente marco en el archivo de unidad:
- Ajustar ExecStart: asegúrese de que la ruta especificada
ExecStart
sea accesible para su cuenta de usuario. - Crear directorio Systemd local del usuario:
- Copiar el archivo de unidad: Transfiera su unidad de servicio personalizada al directorio local:
- Recargar Systemd para el usuario: verificar que Systemd verifique el directorio del usuario en busca de cambios:
- Comprobar el estado del servicio: Asegúrese de que su servicio de usuario se reconozca correctamente:
nano ~/my-user-app.service
[Unit] Description=My First User Service After=graphical-session.target [Service] Type=simple ExecStart=/path/to/bin [Install] WantedBy=default.target
mkdir -p ~/.config/systemd/user/
cp ~/my-user-app.service ~/.config/systemd/user/
systemctl daemon-reload --user
systemctl --user status my-user-app.service

Optimización de su servicio Systemd personalizado
La flexibilidad de Systemd permite a los usuarios ajustar con precisión los parámetros y comportamientos del servicio.
Integración de variables de entorno
Las variables de entorno enriquecen los programas de Linux con contexto adicional sin modificar los archivos de configuración, y Systemd admite su incorporación en unidades de servicio.
- Deshabilitar el servicio: comience por deshabilitar el servicio que desea modificar:
- Edite su archivo de servicio: abra el archivo de unidad en su editor de texto preferido:
- Modificar la sección de Servicio: En la
[Service]
sección, incluya: - Recargar Daemon: guarde y vuelva a cargar el daemon Systemd para aplicar los cambios:
- Reinicie el servicio: reinicie utilizando su nueva variable de entorno:
systemctl --user disable --now my-user-app.service
sudo nano ~/.config/systemd/user/my-user-app.service
Environment="VARIABLE_NAME=VALUE"
systemctl --user daemon-reload
systemctl --user start my-user-app.service

Limitación del uso de recursos
Systemd proporciona mecanismos para regular el uso de recursos de los servicios para garantizar una utilización justa.
- Deshabilitar el servicio de destino: comience por deshabilitarlo por completo:
- Editar el archivo de unidad: Abra el archivo de servicio con:
- Agregar límites de recursos: por ejemplo, para limitar la memoria:
- Recargar cambios de unidad: Recargue su nueva configuración:
- Supervisar el uso de recursos: realice un seguimiento del rendimiento del servicio con:
sudo systemctl disable my-system-app.service
sudo nano /etc/systemd/system/my-system-app.service
MemoryHigh=SIZE
sudo systemctl daemon-reload
systemd-cgtop

Conclusión
Explorar Systemd le permitirá descubrir un potencial significativo para la gestión de procesos en Linux. Al crear servicios personalizados, desde la automatización de tareas hasta la gestión de la eficiencia de los recursos, puede mejorar significativamente la interoperabilidad y el rendimiento de su sistema. Profundice en Systemd y sus amplias capacidades, y considere explorar las ventajas comparativas de Run0 sobre Sudo para obtener una comprensión más matizada.
Crédito de la imagen: Mikhail Fesenko vía Unsplash. Todas las modificaciones y capturas de pantalla son de Ramces Red.
Preguntas frecuentes
1.¿Cuáles son las ventajas de utilizar los servicios de Systemd sobre los sistemas init tradicionales?
Systemd ofrece inicio de servicios paralelos, gestión de dependencias y un enfoque unificado para el manejo de servicios, mejorando el rendimiento general y la confiabilidad en comparación con los sistemas de inicio tradicionales.
2.¿Puedo crear varios servicios para una sola aplicación?
Sí, puedes crear varias unidades de servicio para una sola aplicación para gestionar diferentes aspectos, como comenzar con diferentes configuraciones o durante condiciones específicas.
3.¿Cómo puedo solucionar problemas con mis servicios Systemd?
Puede solucionar problemas de servicios de Systemd utilizando comandos como journalctl -u my-service-name.service
para verificar registros e systemctl status my-service-name.service
investigar el estado actual y los mensajes de error.
Deja una respuesta ▼