parallel
parallel copied to clipboard
Parallel always uses the same /tmp directory -- cannot run two parallel commands in parallel
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.
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)/).