Parallel always uses the same /tmp directory -- cannot run two parallel commands in parallel
mateon1 opened this issue · 1 comments
mateon1 commented
If I try to run two parallel
commands at once, I get weird issues and panics. This is because both commands use the same directory /tmp/parallel
for their internal state.
Every time a parallel
command is ran, a different /tmp
directory should be chosen, by appending several random characters to the end of the existing directory name, like other utilities using /tmp
directories do.
Alternatively, use /tmp/parallel-${PID}
as the tmp directory to avoid collisions.
In practice this bug causes hard to debug issues when shell scripts involving parallel
are ran concurrently.
Shados commented
Using a predictably-named temporary directory in /tmp
is a security issue. Instead:
- Use a (properly) randomised name for the temporary directory, ideally prefixed or suffixed with something like
parallel-
so it is still obvious what it is being used by. - When possible, create the temporary directory under the per-user temporary runtime directory path (the
XDG_RUNTIME_DIR
, which is typically/run/user/$(id -u)/
).