I am developing for Linux and have a daemon that should write to disk when it is killed. The daemon could be configured to listen to SIGTERM
and write to disk when that signal is received.
I am also familiar with the PrepareForShutdown
D-Bus signal issued by the login manager. Listening to SIGTERM
results in simpler code than inhibiting shutdown and listening to the PrepareForShutdown
signal. Another advantage of SIGTERM
is that it handles cases where the daemon is politely killed even though the system shuts down.
However, I am not sure how safe it is to rely on the SIGTERM
signal being sent by the kernel at shutdown. At shutdown is SIGTERM
always sent to every process with enough time to perform a small (< 1 kB) write to disk?
One concern I have is that I might have enough time to write to disk on some hardware but not on others, so it seems difficult to test. The same could be said of the PrepareForShutdown
signal, but at least allowing enough time for disk writes is part of the contract of that signal. My question is whether the same can be said for the SIGTERM
signal every process receives on shutdown.