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]
. @
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
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