[systemd-devel] GuessMainPID=no required to make daemon reload work
Gerd v. Egidy
lists at egidy.de
Mon May 5 14:28:54 PDT 2014
> Generally, it's not a good idea to keep file locks for a longer period
> of time... YOu should really just take them while you write a file, and
> then release them, but not keep them forever...
I keep the lock on the pidfile as long as the daemon is running. I think this
is the best way to prevent a second daemon from running in parallel:
If the first instance of your program just writes the pid into the pidfile and
the second instance reads it and checks if this pid is alive, the first
instance could have died ages ago and the pid was reused by another program.
Or if the whole system crashes and is rebooted, another program could have
been issued the same pid as the daemon had before. So the new instance won't
start.
By using the lock I can make sure that this can't happen as the lock will be
removed when the first instance dies or the system is rebooted.
I don't want to rely on systemd for all that because the program must work
reliably on platforms without systemd too.
> systemd expects that binaries forked off with ExecStart= (if you use
> Type=forking) or ExecReload= return only after the new daemon is fully
> up and the PID file is written.
Thanks for pointing this out. Will add some logic to ensure this.
Kind regards,
Gerd
More information about the systemd-devel
mailing list