Como posso iniciar unidades de serviço systemd em ordem?

1

Como posso obter as seguintes unidades de serviço para iniciar na ordem de 0-3 (0,1,2,3)? Eu tentei ativar o echo-date-1.service pensando, ele exigirá echo-date-2, que exigirá echo-date-3, que exigirá echo-date-0, portanto, iniciando echo-date-0 primeiro e, em seguida, iniciando echo-date-1,2,3. Quando verifico o gráfico de análise do systemd, a ordem parece errada:

-------------------echo-date-1.service-------------------[Unit]Description=Startecho-date-1Requires=echo-date-2.service**After=echo-date-0.service**[Service]ExecStart=/home/USER/bash/echo-date-1.sh[Install]WantedBy=multi-user.target-------------------echo-date-2.service-------------------[Unit]Description=Startecho-date-2Requires=echo-date-3.service**After=echo-date-1.service**[Service]ExecStart=/home/USER/bash/echo-date-2.sh[Install]WantedBy=multi-user.target-------------------echo-date-3.service-------------------[Unit]Description=Startecho-date-3Requires=echo-date-0.service**After=echo-date-2.service**[Service]ExecStart=/home/USER/bash/echo-date-3.sh[Install]WantedBy=multi-user.target-------------------echo-date-0.service-------------------[Unit]Description=Startecho-date-0[Service]ExecStart=/home/USER/bash/echo-date-0.sh[Install]WantedBy=multi-user.target

Editar:Euacreditoquetenhoessetrabalho.EutivequeusarosdoisrequereapósnaseçãoUnitdoarquivodeserviço.UsarapenasRequerouDepoisdenãofuncionou;Eutivequeusarosdois.Existeumarazãoparaisso?

Aquiestáasaídadográficodeanálisesystemdeostatussystemctldosarquivosdeserviço(consulteonúmerodoPID)

● echo-date-0.service - Start echo-date-0
   Loaded: loaded (/etc/systemd/system/echo-date-0.service; disabled; vendor preset: disabled)
   Active: inactive (dead) since Tue 2017-07-18 16:04:43 EDT; 9min ago
  Process: 281 ExecStart=/home/USER/bash/echo-date-0.sh (code=exited, status=0/SUCCESS)
 Main PID: 281 (code=exited, status=0/SUCCESS)

Jul 18 16:04:43 localhost systemd[1]: Started Start echo-date-0.

● echo-date-1.service - Start echo-date-1
   Loaded: loaded (/etc/systemd/system/echo-date-1.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Tue 2017-07-18 16:04:43 EDT; 10min ago
  Process: 283 ExecStart=/home/USER/bash/echo-date-1.sh (code=exited, status=0/SUCCESS)
 Main PID: 283 (code=exited, status=0/SUCCESS)

Jul 18 16:04:43 localhost systemd[1]: Started Start echo-date-1.

● echo-date-2.service - Start echo-date-2
   Loaded: loaded (/etc/systemd/system/echo-date-2.service; disabled; vendor preset: disabled)
   Active: inactive (dead) since Tue 2017-07-18 16:04:43 EDT; 10min ago
  Process: 284 ExecStart=/home/USER/bash/echo-date-2.sh (code=exited, status=0/SUCCESS)
 Main PID: 284 (code=exited, status=0/SUCCESS)

Jul 18 16:04:43 localhost systemd[1]: Started Start echo-date-2.

● echo-date-3.service - Start echo-date-3
   Loaded: loaded (/etc/systemd/system/echo-date-3.service; disabled; vendor preset: disabled)
   Active: inactive (dead) since Tue 2017-07-18 16:04:43 EDT; 10min ago
  Process: 285 ExecStart=/home/USER/bash/echo-date-3.sh (code=exited, status=0/SUCCESS)
 Main PID: 285 (code=exited, status=0/SUCCESS)

Jul 18 16:04:43 localhost systemd[1]: Started Start echo-date-3.
    
por jes516 18.07.2017 / 21:04

1 resposta

1

Na documentação systemd.unit , diz que, se você quiser controlar a peça que você tenha que usar uma combinação de Requires com Before / After . No seu exemplo, eu definiria o seguinte:

# echo-date-0.service
[Unit]
Description=Start echo-date-0

[Service]
ExecStart=/home/USER/bash/echo-date-0.sh

[Install]
WantedBy=multi-user.target
# echo-date-1.service
[Unit]
Description=Start echo-date-1
Requires=echo-date-0.service
After=echo-date-0.service

[Service]
ExecStart=/home/USER/bash/echo-date-1.sh

[Install]
WantedBy=multi-user.target
# echo-date-2.service
[Unit]
Description=Start echo-date-2
Requires=echo-date-1.service
After=echo-date-1.service

[Service]
ExecStart=/home/USER/bash/echo-date-2.sh

[Install]
WantedBy=multi-user.target
# echo-date-3.service
[Unit]
Description=Start echo-date-3
Requires=echo-date-2.service
After=echo-date-2.service

[Service]
ExecStart=/home/USER/bash/echo-date-3.sh

[Install]
WantedBy=multi-user.target

E, ao ativar echo-date-3.service , todos os outros serviços serão iniciados.

    
por 18.07.2017 / 22:53

Tags