Skip to content

apb-freelance/config-service-systemd

Repository files navigation

🛠️ Plantilla Completa para Crear Servicios systemd en Linux

Esta guía incluye una plantilla comentada para definir servicios con systemd. Todas las opciones están desactivadas por defecto (comentadas) salvo las básicas, y perfectamente alineadas para facilitar la edición.


📄 Archivo del servicio .service

📁 Ubicación recomendada: /etc/systemd/system/mi_servicio.service

[Unit]
Description=Mi Servicio Personalizado
After=network.target

# Wants=network-online.target         # Intenta que otros servicios estén activos antes
# Requires=network.target             # Este servicio depende críticamente de otro
# StartLimitIntervalSec=500           # Ventana de tiempo para contar fallos de arranque
# StartLimitBurst=5                   # Máximo intentos de arranque en esa ventana

[Service]
ExecStart=/usr/local/bin/mi_servicio.sh
# ExecStop=/usr/local/bin/mi_servicio_stop.sh   # Comando a ejecutar para detener el servicio
Restart=always                                  # Reinicia siempre si falla o se detiene

# RestartSec=3                          # Espera X segundos antes de reiniciar
# StartLimitInterval=60                 # Intervalo para contar reinicios (reintentos)
# StartLimitBurst=3                     # Máximo reintentos en ese intervalo

# User=nobody                           # Usuario bajo el cual correrá el servicio
# Group=nogroup                         # Grupo del servicio
# ProtectSystem=full                    # Monta el sistema en solo lectura para el servicio
# ProtectHome=true                      # Bloquea acceso a /home
# PrivateTmp=true                       # Usa un /tmp exclusivo y privado
# NoNewPrivileges=true                  # No permite ganar privilegios tras arrancar
# CapabilityBoundingSet=                # Lista blanca de capacidades permitidas

# TimeoutStartSec=30                    # Tiempo máximo para que el servicio arranque
# TimeoutStopSec=10                     # Tiempo máximo para que se detenga con gracia
# RuntimeMaxSec=3600                    # Tiempo máximo total de ejecución

# Restart=on-failure                    # Solo reinicia si el proceso falla
# SuccessExitStatus=0                   # Define qué códigos de salida se consideran éxito
# FailureAction=none                    # Acción a tomar si falla (reboot, halt, etc.)

# LimitNOFILE=65536                     # Límite de archivos abiertos
# LimitNPROC=4096                       # Límite de procesos simultáneos
# MemoryMax=100M                        # Límite de memoria RAM
# CPUQuota=50%                          # Límite de CPU asignada al servicio

# StandardOutput=journal                # Salida estándar al journal (log)
# StandardError=journal                 # Error estándar al journal (log)
# SyslogIdentifier=mi_servicio          # Nombre identificador en los logs del sistema

[Install]
WantedBy=multi-user.target

🧠 Explicación rápida de las secciones

🔹 [Unit]

Define relaciones con otros servicios o condiciones de inicio.

Opción Descripción
Wants Servicios deseados pero no obligatorios
Requires Servicios obligatorios, si fallan este también
After Define el orden de inicio
StartLimit* Controla cuántos intentos antes de marcar fallo

🔸 [Service]

Configura cómo se ejecuta, detiene y aísla el servicio.

Opción Descripción
ExecStart Comando principal del servicio
ExecStop Comando que se ejecuta al detener el servicio
Restart Política de reinicio (always, on-failure…)
User / Group Seguridad: usuario y grupo sin privilegios
Timeout* Límites de tiempo de arranque/parada/ejecución
MemoryMax, CPUQuota Límite de recursos
Protect* Sandbox y seguridad
StandardOutput Redirección de logs
SyslogIdentifier Cómo aparece en los logs

🔹 [Install]

Define cuándo o cómo se activa el servicio.

Opción Descripción
WantedBy En qué "target" debe iniciarse (multi-user.target = arranque normal sin GUI)

🚀 Comandos útiles para manejar tu servicio

# Crear y recargar el servicio
sudo systemctl daemon-reload

# Activar al arranque
sudo systemctl enable mi_servicio

# Iniciar / detener / reiniciar
sudo systemctl start mi_servicio
sudo systemctl stop mi_servicio
sudo systemctl restart mi_servicio

# Ver estado
sudo systemctl status mi_servicio

# Ver logs
journalctl -u mi_servicio -f

About

Guia y ejemplos de configuración de servicios bajo systemd

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages