pokud Type=simple
v souboru jednotky můžete zadat pouze jeden ExecStart, ale můžete přidat tolik ExecStartPre
, ExecStartPost
, ale nic z toho není vhodné pro dlouho spuštěné příkazy, protože se spouštějí sériově a před spuštěním dalšího je vše při jednom spuštění ukončeno.
Pokud Type=oneshot
můžete zadat více ExecStart, běží sériově, ne paralelně.
Pokud chcete spustit více jednotek paralelně, můžete udělat několik věcí:
Pokud se liší o 1 parametr
Můžete použít jednotky šablony, takže vytvoříte /etc/systemd/system/[email protected]
. POZNÁMKA: (@
je důležité).
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=multi-user.target
A pak provedete:
$ systemctl start [email protected] [email protected]
nebo...
Cílit na závislosti
Můžete vytvořit více jednotek, které odkazují na jeden cíl:
#/etc/systemd/system/bar.target
[Unit]
Description=bar target
Requires=multi-user.target
After=multi-user.target
AllowIsolate=yes
A pak už jen upravíte své jednotky .service na WantedBy=bar.target
jako:
#/etc/systemd/system/[email protected]
[Unit]
Description=script description %I
[Service]
Type=simple
ExecStart=/script.py %i
Restart=on-failure
[Install]
WantedBy=bar.target
Pak jen povolíte souběžně požadované služby foo a spustíte cíl baru takto:
$ systemctl daemon-reload
$ systemctl enable [email protected]
$ systemctl enable [email protected]
$ systemctl start bar.target
POZNÁMKA: že to funguje s jakýmkoliv typem jednotek, nejen s jednotkami šablony.
Můžete použít ExecStartPre
nebo ExecStartPost
pro jeden ze skriptů
[Unit]
Description=script description
[Service]
Type=simple
ExecStartPre=/script.py parameters1
ExecStart=/script.py parameters2
Restart=on-failure
[Install]
WantedBy=multi-user.target