GNU/Linux >> Znalost Linux >  >> Linux

Systemd s více execStart

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

Linux
  1. Tato chyba o Upstart/systemd With Runit?

  2. Negrafické spouštění pomocí Systemd?

  3. CentOS / RHEL 7 :Jak změnit úrovně běhu (cíle) pomocí systemd

  1. Zpracování signálu s více vlákny v Linuxu

  2. Třídění čísel s více desetinnými místy v bash

  3. systemd - Dávám mé službě více argumentů

  1. Spravujte více instancí služeb pomocí systemctl

  2. Správa zdrojů pomocí cgroups v systemd

  3. Použití více vzorů najednou pomocí příkazu Sed