I recently had a bug where I used -X when I didn't mean to, (copy/paste bug). The script can't handle additional arguments without additional --flags. I can approximate this easily with this example (using -m because -X is generally too smart for utils I could think of):
This will fail, since 'dd' doesn't allow bare arguments and the -j1 forces parallel to try to run it all at once. parallel --tag -j1 -m 'dd if=/dev/zero of=/dev/null count={}' ::: 1 2 This doesn't fail. parallel --tag -j2 -m 'dd if=/dev/zero of=/dev/null count={}' ::: 1 2 This manifest in jobs running on machines with lots of cores, no failure, despite the -m/-X really being in error. Without the -j, we just get the default -j for that machine. I would have liked for the -m/-X to fail regardless of the number of cores, since it was really inappropriate to run the tool with options in that way. To me the -m/-X is more important than the -j but I can see it both ways. $ parallel --version GNU parallel 20200422 Also, Thanks for parallel, it is fantastic and I love it. Josef