mmstick/parallel

Parallel always uses the same /tmp directory -- cannot run two parallel commands in parallel

mateon1 opened this issue · 1 comments

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)/).