linux - enable - systemctl list services
Systemd con execStart mĂșltiple (2)
Puede usar ExecStartPre
o ExecStartPost
para uno de los scripts
[Unit]
Description=script description
[Service]
Type=simple
ExecStartPre=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target
Yo sabría si es posible crear un servicio con el mismo script iniciado con diferentes parámetros de entrada. Como:
[Unit]
Description=script description
[Service]
Type=simple
ExecStart=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target
¿Es posible? ¿Entonces se lanzará al modo serial? o en dos procesos diferentes? Atentamente
Si es 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 los comandos de ejecución prolongada, ya que se ejecutan en serie y todo el inicio se anula antes empezando el siguiente.
Si Type=oneshot
puede especificar múltiples ExecStart, se ejecutan en serie no en paralelo.
Si lo que quieres es ejecutar varias unidades en paralelo, hay algunas cosas que puedes hacer:
Si difieren en 1 param
Puede usar unidades de plantilla, por lo que crea un /etc/systemd/system/[email protected]
. NOTA: (la @
es importante).
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
Y luego exec:
$ systemctl start [email protected] [email protected]
o...
Dependencias de destino
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 habilita los servicios de Foo que desea en paralelo, y comienza la barra de destino de esta manera:
$ systemctl daemon-reload
$ systemctl enable [email protected]
$ systemctl enable [email protected]
$ systemctl start bar.target
NOTA: esto funciona con cualquier tipo de unidades, no solo con unidades de plantilla.