From: Lucas Werkmeister Date: Mon, 18 Jan 2021 20:58:28 +0000 (+0100) Subject: man: document effects of concurrent truncation X-Git-Tag: v248-rc1~305^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e37258406766efe53b161ee1d077872fda82ae1b;p=thirdparty%2Fsystemd.git man: document effects of concurrent truncation Co-authored-by: Lennart Poettering --- 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.