From e37258406766efe53b161ee1d077872fda82ae1b Mon Sep 17 00:00:00 2001 From: Lucas Werkmeister Date: Mon, 18 Jan 2021 21:58:28 +0100 Subject: [PATCH] man: document effects of concurrent truncation Co-authored-by: Lennart Poettering --- man/systemd.exec.xml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index a3c641e1165..9b0169f0d6f 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -2429,8 +2429,15 @@ SystemCallErrorNumber=EPERM it. For units with multiple command lines, e.g. Type=oneshot services with multiple ExecStart=, or services with ExecCondition=, ExecStartPre= or ExecStartPost=, the output file is reopened - and therefore re-truncated for each command line. Any ExecReload= will likewise - truncate the file when run. + and therefore re-truncated for each command line. If the output file is truncated while another + process still has the file open, e.g. by an ExecReload= running concurrently with + an ExecStart=, and the other process continues writing to the file without + adjusting its offset, then the space between the file pointers of the two processes may be filled + with NUL bytes, producing a sparse file. Thus, + is typically only useful for units where + only one process runs at a time, such as services with a single ExecStart= and no + ExecStartPost=, ExecReload=, ExecStop= or + similar. connects standard output to a socket acquired via socket activation. The semantics are similar to the same option of StandardInput=, see above. -- 2.47.3