SDB:Systemd files

Saltar a: navegación, buscar

Sea un daemon vampird que se encarga de una tarea X, en la que se necesita la red. Para que systemd lo inicie somo un servicio del sistema es necesario crear un archivo de unidad.

Estructura básica de una unidad

[Unit]
Description = Descripción del daemon vampird
Requires = network.target
After = network.target

[Service]
Type = forking
PIDFile = /var/run/vampird.pid
ExecStart = /ruta/al/daemon/vampird start
ExecStop = /ruta/al/daemon/vampird stop
Restart = on-abort

Dependencias

Las dependencias en systemd son controladas con las variables After, Requires y Wants. En el caso de la unidad anterior el daemon requiere el target network, esto es especificado en la sección [Unit] con la linea Requires = network.target, si no fuera un requerimiento escencial podria usarse Wants en vez de Requires. Wants= y Requires= no incluyen After=, lo que significa que si After= no está especificado, las dos unidades se iniciarán en paralelo.

Tipo de inicio

Existen diferentes tipos de arranque a tener en cuenta cuando se escribe un archivo de servicio personalizado. Esto se configura mediante el parámetro Type= en la sección [Service].

  1. Type=simple: systemd considera que el servicio debe iniciarse inmediatamente. El proceso no debe romperse. No utilice este tipo si otros servicios tienen que ser llamados por ese servicio, a menos que no sea activado por el socket.
  2. Type=forking: systemd considera que el servicio debe ser iniciado antes que el proceso se rompa y el antecesor se haya terminado. Para los demonios clásicos use este tipo a menos que sepa que no es necesario, ya que la mayoría de los demonios usan doble bifurcación para indicar que están listos. Debe especificar también PIDFile= para que systemd puede realizar un seguimiento del proceso principal.
  3. Type=oneshot: Esto es útil para los scripts que hacen un solo trabajo y luego concluyen. Es posible que desee también establecer RemainAfterExit= de modo que systemd sigue considerando el servicio como activo después de que el proceso haya terminado.
  4. Type=notify: Igual que Type=simple, pero con la condición de que el demonio va a enviar una señal a systemd cuando esté listo. Esto requiere del código específico proporcionado por libsystemd-daemon.so.
  5. Type=dbus: El servicio se considera listo cuando el BusName especificado que aparece en el sistema bus es DBus.