I want to delay the start of a service if a exist (instead of fail the service if the file exist, as with
ConditionPathExists=) but did not find anything in unit documentation
Is it technically possible with systemd ? How ?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
using just one unit
TimeoutStartSec=infinity in the unit file and configure
ExecStart= with a script like
#! /bin/bash TIMEOUT=1000 test -f /path/to/testfile && sleep "$TIMEOUT" exec /path/to/service/binary plus arguments
This cannot be done (in a useful way) with
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.
using a helper unit
If you want to do this with systemd "alone" then you can create a helper unit
check_and_wait. This one gets the entries
TimeoutStartSec=infinity ConditionPathExists=/path/to/testfile ExecStart=/usr/bin/sleep 1000 RemainAfterExit=yes
The main unit gets these entries: