Atrasa o serviço systemd se o arquivo existir

1

Eu quero atrasar o início de um serviço se existir (em vez de falhar o serviço se o arquivo existir, como acontece com ConditionPathExists= ), mas não encontrar nada na unidade documentação

É tecnicamente possível com o systemd? Como?

    
por Zulgrib 26.08.2017 / 15:04

1 resposta

3

usando apenas uma unidade

Coloque TimeoutStartSec=infinity no arquivo da unidade e configure ExecStart= com um script como

#! /bin/bash

TIMEOUT=1000

test -f /path/to/testfile && sleep "$TIMEOUT"

exec /path/to/service/binary plus arguments

Isso não pode ser feito (de maneira útil) com ExecStartPre= , consulte man systemd.service :

Note that ExecStartPre= may not be used to start long-running processes. All processes forked off by processes invoked via ExecStartPre= will be killed before the next service process is run.

usando uma unidade auxiliar

Se você quiser fazer isso com o systemd "sozinho", você pode criar uma unidade auxiliar check_and_wait . Este recebe as entradas

TimeoutStartSec=infinity
ConditionPathExists=/path/to/testfile
ExecStart=/usr/bin/sleep 1000
RemainAfterExit=yes

A unidade principal recebe estas entradas:

Wants=check_and_wait
After=check_and_wait
    
por 26.08.2017 / 15:26