GNU/Linux >> Tutoriales Linux >  >> Linux

Systemd con múltiples execStart

si Type=simple en su archivo de unidad, solo puede especificar un ExecStart, pero puede agregar tantos ExecStartPre , ExecStartPost , pero nada de esto es adecuado para comandos de ejecución prolongada, porque se ejecutan en serie y todo lo que se inicia se elimina antes de iniciar el siguiente.

Si Type=oneshot puede especificar varios ExecStart, se ejecutan en serie, no en paralelo.

Si lo que desea es ejecutar varias unidades en paralelo, hay algunas cosas que puede hacer:

Si difieren en 1 parámetro

Puede usar unidades de plantilla, por lo que crea un /etc/systemd/system/[email protected] . NOTA: (el @ es importante).

[Unit]
Description=script description %I

[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure

[Install]
WantedBy=multi-user.target

Y luego tu ejecutivo:

$ systemctl start [email protected] [email protected]

o...

Dependencias objetivo

Puede crear varias unidades que se vinculen a un solo objetivo:

#/etc/systemd/system/bar.target
[Unit]
Description=bar target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes

Y luego simplemente modifica sus unidades de servicio para que sean WantedBy=bar.target como:

#/etc/systemd/system/[email protected]
[Unit]
Description=script description %I

[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure

[Install]
WantedBy=bar.target

Luego, simplemente habilite los servicios foo que desee en paralelo e inicie el objetivo de la barra de esta manera:

$ systemctl daemon-reload
$ systemctl enable [email protected]
$ systemctl enable [email protected]
$ systemctl start bar.target

NOTA: que esto funciona con cualquier tipo de unidades, no solo unidades de plantilla.


Puedes usar ExecStartPre o ExecStartPost para uno de los guiones

[Unit]
Description=script description

[Service]
Type=simple
ExecStartPre=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure

[Install]
WantedBy=multi-user.target

Linux
  1. Usando múltiples patrones a la vez con el comando Sed

  2. ¿Systemd todavía sabe acerca de los niveles de ejecución?

  3. Manejo de señales con múltiples hilos en Linux

  4. ¿Busca múltiples patrones (palabras) con ack?

  5. systemd - Dando a mi servicio múltiples argumentos

Cómo ejecutar contenedores como servicio Systemd con Podman

Cómo administrar unidades systemd al inicio

Ordenar la gestión de procesos con ps o systemd

Administrar cgroups con systemd

Ordenar números con múltiples decimales en bash

¿Cómo ejecutar un script con systemd justo antes de apagar?