services enable disabled create linux service server systemd

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.