Systemd: Iniciar vários serviços, um após o outro, sem depósitos específicos

4

Eu tenho um sistema composto por cerca de 15 serviços. Eles não têm interdependências (ou seja, nenhum serviço requer outro para iniciar) e eles notificam o systemd quando o start-up é concluído (por exemplo, Type=notify ).

O problema é que, se eu iniciá-los todos ao mesmo tempo, meu sistema está sobrecarregado e os processos são eliminados devido ao tempo limite do systemd.

O que eu quero fazer é "agrupar" meus serviços para que eles iniciem um após o outro, sem uma ordem específica. Isso é possível com o arquivo de serviço do systemd?

BTW: aqui está um modelo do meu arquivo de serviço:

[Unit]
Description=Template service file
After=network.target

[Service]
Type=notify

User=1000
Group=1000

# Set the working directory and the binary to start
WorkingDirectory=/home/user/
ExecStart=/path/to/some/process

# The standard input and output are useless (i.e. unused by the process)
StandardInput=null
StandardOutput=null
# Disable the standard error because all logs are already saved in a specific directory
StandardError=null

# Send SIGTERM then SIGKILL after TimeoutStopSec seconds (default: 2)
KillMode=mixed
TimeoutStopSec=2

# Setup a start timeout
TimeoutStartSec=30

# On abnormal (i.e. non 0 exit code or killed by a signal) termination restart the process after RestartSec seconds (default: 5)
Restart=on-failure
RestartSec=5
# Authorise process restart only 5 times maximum in a 120 seconds interval
StartLimitBurst=5
StartLimitInterval=120

# Set watchdog timeout (default: 10)
WatchdogSec=10
NotifyAccess=main

# Set security options
NoNewPrivileges=yes

[Install]
WantedBy=custom.target

Obrigado pela sua ajuda

    
por Forbinn 10.11.2017 / 22:54

1 resposta

0

Você pode agrupar os serviços em destinos e adicionar as dependências usando Requires , After e Before . Como você mencionou que esses serviços são mutuamente exclusivos e também são notificados novamente ao systemd, pode ser necessário adicionar apenas um After para cada um dos serviços com base na ordem que você deseja que eles sejam executados.

Se você quiser utilizar totalmente o seu sistema, considere executar alguns serviços paralelos para que a largura de banda da CPU seja totalmente utilizada.

Você pode ler as palavras-chave systemd aqui

    
por 19.11.2017 / 14:42