[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Tarsnap fails with broken pipe in systemd timer unit
On Tue, Oct 08, 2019 at 01:00:48PM -0700, Colin Percival wrote:
> Why your shell cares about tarsnap's exit code, I don't know; normal POSIX
> shells ignore the exit codes from processes other than the last one in a
> pipeline. Maybe systemd launches bash with some weird "don't behave the way
> that shells are supposed to behave" flags.
There's common advice to run bash scripts with:
set -euxo pipefail
where `-o pipefail` checks the exit code of each command and bails if it's
non-zero. (Or rather: it stops the pipe and sets the exit code of the whole
pipe to that non-zero code; if -e is set, then the whole script bails.)
I couldn't find any evidence that systemd is setting this automatically,
though. But if the original script runs in the shell itself but not as a
systemd service, that's where my suspicion lies.