### Test -p --interactive spawn /tmp/parallel-script-for-expect Academic tradition requires you to cite works you base your article on. When using programs that use GNU Parallel to process data for publication please cite: O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47. This helps funding further development; and it won't cost you a cent. If you pay 10000 EUR you should feel free to use GNU Parallel without citing. To silence this citation notice run 'parallel --bibtex' once or use '--will-cite'. sleep 0.1; echo opt-p 1 ?...y sleep 0.1; echo opt-p 2 ?...n sleep 0.1; echo opt-p 3 ?...y opt-p 1 opt-p 3 Academic tradition requires you to cite works you base your article on. When using programs that use GNU Parallel to process data for publication please cite: O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47. This helps funding further development; and it won't cost you a cent. If you pay 10000 EUR you should feel free to use GNU Parallel without citing. To silence this citation notice run 'parallel --bibtex' once or use '--will-cite'. sleep 0.1; echo opt--interactive 1 ?...y sleep 0.1; echo opt--interactive 2 ?...n sleep 0.1; echo opt--interactive 3 ?...y opt--interactive 1 opt--interactive 3 echo '### Test killing children with --timeout and exit value (failed if timed out)' ### Test killing children with --timeout and exit value (failed if timed out) pstree $$ | grep sleep | grep -v anacron | grep -v screensave | wc; parallel --timeout 3 'true {} ; for i in `seq 100 120`; do bash -c "(sleep $i)" & sleep $i & done; wait; echo No good' ::: 1000000000 1000000001 ; echo $?; sleep 2; pstree $$ | grep sleep | grep -v anacron | grep -v screensave | wc 0 0 0 2 0 0 0 echo '### Test -L -l and --max-lines' ### Test -L -l and --max-lines (echo a_b;echo c) | parallel -km -L2 echo a_b c (echo a_b;echo c) | parallel -k -L2 echo a_b c (echo a_b;echo c) | xargs -L2 echo a_b c echo '### xargs -L1 echo' ### xargs -L1 echo (echo a_b;echo c) | parallel -km -L1 echo a_b c (echo a_b;echo c) | parallel -k -L1 echo a_b c (echo a_b;echo c) | xargs -L1 echo a_b c echo 'Lines ending in space should continue on next line' Lines ending in space should continue on next line echo '### xargs -L1 echo' ### xargs -L1 echo (echo a_b' ';echo c;echo d) | parallel -km -L1 echo a_b c d (echo a_b' ';echo c;echo d) | parallel -k -L1 echo a_b c d (echo a_b' ';echo c;echo d) | xargs -L1 echo a_b c d echo '### xargs -L2 echo' ### xargs -L2 echo (echo a_b' ';echo c;echo d;echo e) | parallel -km -L2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -k -L2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs -L2 echo a_b c d e echo '### xargs -l echo' ### xargs -l echo (echo a_b' ';echo c;echo d;echo e) | parallel -l -km echo # This behaves wrong a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -l -k echo # This behaves wrong a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs -l echo a_b c d e echo '### xargs -l2 echo' ### xargs -l2 echo (echo a_b' ';echo c;echo d;echo e) | parallel -km -l2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -k -l2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs -l2 echo a_b c d e echo '### xargs -l1 echo' ### xargs -l1 echo (echo a_b' ';echo c;echo d;echo e) | parallel -km -l1 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -k -l1 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs -l1 echo a_b c d e echo '### xargs --max-lines=2 echo' ### xargs --max-lines=2 echo (echo a_b' ';echo c;echo d;echo e) | parallel -km --max-lines 2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel -k --max-lines 2 echo a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs --max-lines=2 echo a_b c d e echo '### xargs --max-lines echo' ### xargs --max-lines echo (echo a_b' ';echo c;echo d;echo e) | parallel --max-lines -km echo # This behaves wrong a_b c d e (echo a_b' ';echo c;echo d;echo e) | parallel --max-lines -k echo # This behaves wrong a_b c d e (echo a_b' ';echo c;echo d;echo e) | xargs --max-lines echo a_b c d e echo '### test too long args' ### test too long args perl -e 'print "z"x1000000' | parallel echo 2>&1 parallel: Error: Command line too long (1000005 >= 131071) at number 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... perl -e 'print "z"x1000000' | xargs echo 2>&1 xargs: argument line too long (seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -km -s 10 echo 1 2 3 4 5 6 7 8 9 10 parallel: Error: Command line too long (1000007 >= 10) at number 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... (seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdout xargs -s 10 echo 1 2 3 4 5 6 7 8 xargs: argument line too long 9 10 (seq 1 10; perl -e 'print "z"x1000000'; seq 12 15) | stdout parallel -j1 -kX -s 10 echo 1 2 3 4 5 6 7 8 9 10 parallel: Error: Command line too long (1000007 >= 10) at number 0: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz... echo '### Test -x' ### Test -x (seq 1 10; echo 12345; seq 12 15) | stdout parallel -j1 -km -s 10 -x echo 1 2 3 4 5 6 7 8 9 10 parallel: Error: Command line too long (10 >= 10) at number 0: 12345... (seq 1 10; echo 12345; seq 12 15) | stdout parallel -j1 -kX -s 10 -x echo 1 2 3 4 5 6 7 8 9 10 parallel: Error: Command line too long (10 >= 10) at number 0: 12345... (seq 1 10; echo 12345; seq 12 15) | stdout xargs -s 10 -x echo 1 2 3 4 5 6 xargs: argument line too long 7 8 (seq 1 10; echo 1234; seq 12 15) | stdout parallel -j1 -km -s 10 -x echo 1 2 3 4 5 6 7 8 9 10 1234 12 13 14 15 (seq 1 10; echo 1234; seq 12 15) | stdout parallel -j1 -kX -s 10 -x echo 1 2 3 4 5 6 7 8 9 10 1234 12 13 14 15 (seq 1 10; echo 1234; seq 12 15) | stdout xargs -s 10 -x echo 1 2 3 4 5 6 7 8 9 10 1234 12 13 14 15 echo '### Test -a and --arg-file: Read input from file instead of stdin' ### Test -a and --arg-file: Read input from file instead of stdin seq 1 10 >/tmp/$$-1; parallel -k -a /tmp/$$-1 echo 1 2 3 4 5 6 7 8 9 10 seq 1 10 >/tmp/$$-2; parallel -k --arg-file /tmp/$$-2 echo 1 2 3 4 5 6 7 8 9 10 xargs Expect: 3 1 2 3 1 2 parallel Expect: 3 1 via psedotty 2 Academic tradition requires you to cite works you base your article on. When using programs that use GNU Parallel to process data for publication please cite: O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47. This helps funding further development; and it won't cost you a cent. If you pay 10000 EUR you should feel free to use GNU Parallel without citing. To silence this citation notice run 'parallel --bibtex' once or use '--will-cite'. 3 1 via pseudotty 2 xargs Expect: 1 3 2 1 3 2 parallel Expect: 1 3 2 via pseudotty Academic tradition requires you to cite works you base your article on. When using programs that use GNU Parallel to process data for publication please cite: O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47. This helps funding further development; and it won't cost you a cent. If you pay 10000 EUR you should feel free to use GNU Parallel without citing. To silence this citation notice run 'parallel --bibtex' once or use '--will-cite'. 1 3 2 via pseudotty ### Hans found a bug giving unitialized variable gzip /tmp/parallel_f1 gzip /tmp/parallel_f2' ' echo '### Test -i and --replace: Replace with argument' ### Test -i and --replace: Replace with argument (echo a; echo END; echo b) | parallel -k -i -eEND echo repl{}ce replace (echo a; echo END; echo b) | parallel -k --replace -eEND echo repl{}ce replace (echo a; echo END; echo b) | parallel -k -i+ -eEND echo repl+ce replace (echo e; echo END; echo b) | parallel -k -i'*' -eEND echo r'*'plac'*' replace (echo a; echo END; echo b) | parallel -k --replace + -eEND echo repl+ce replace (echo a; echo END; echo b) | parallel -k --replace== -eEND echo repl=ce replace (echo a; echo END; echo b) | parallel -k --replace = -eEND echo repl=ce replace (echo a; echo END; echo b) | parallel -k --replace=^ -eEND echo repl^ce replace (echo a; echo END; echo b) | parallel -k -I^ -eEND echo repl^ce replace echo '### Test -E: Artificial end-of-file' ### Test -E: Artificial end-of-file (echo include this; echo END; echo not this) | parallel -k -E END echo include this (echo include this; echo END; echo not this) | parallel -k -EEND echo include this echo '### Test -e and --eof: Artificial end-of-file' ### Test -e and --eof: Artificial end-of-file (echo include this; echo END; echo not this) | parallel -k -e END echo include this (echo include this; echo END; echo not this) | parallel -k -eEND echo include this (echo include this; echo END; echo not this) | parallel -k --eof=END echo include this (echo include this; echo END; echo not this) | parallel -k --eof END echo include this echo '### Test -n and --max-args: Max number of args per line (only with -X and -m)' ### Test -n and --max-args: Max number of args per line (only with -X and -m) (echo line 1;echo line 2;echo line 3) | parallel -k -n1 -m echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k -n2 -m echo line 1 line 1 line 2 (echo line 1;echo line 2;echo line 3) | parallel -k -n1 -X echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k -n2 -X echo line 1 line 1 line 2 (echo line 1;echo line 2;echo line 3) | parallel -k -n1 echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k -n2 echo line 1 line 1 line 2 (echo line 1;echo line 2;echo line 3) | parallel -k --max-args=1 -X echo line 1 line 2 line 3 (echo line 1;echo line 2;echo line 3) | parallel -k --max-args 1 -X echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k --max-args=2 -X echo line 1 line 1 line 2 (echo line 1;echo line 1;echo line 2) | parallel -k --max-args 2 -X echo line 1 line 1 line 2 (echo line 1;echo line 2;echo line 3) | parallel -k --max-args 1 echo line 1 line 2 line 3 (echo line 1;echo line 1;echo line 2) | parallel -k --max-args 2 echo line 1 line 1 line 2 echo '### Test --max-procs and -P: Number of processes' ### Test --max-procs and -P: Number of processes seq 1 10 | parallel -k --max-procs +0 echo max proc max proc 1 max proc 2 max proc 3 max proc 4 max proc 5 max proc 6 max proc 7 max proc 8 max proc 9 max proc 10 seq 1 10 | parallel -k -P 200% echo 200% proc 200% proc 1 200% proc 2 200% proc 3 200% proc 4 200% proc 5 200% proc 6 200% proc 7 200% proc 8 200% proc 9 200% proc 10 echo '### Test --delimiter and -d: Delimiter instead of newline' ### Test --delimiter and -d: Delimiter instead of newline echo '# Yes there is supposed to be an extra newline for -d N' # Yes there is supposed to be an extra newline for -d N echo line 1Nline 2Nline 3 | parallel -k -d N echo This is This is line 1 This is line 2 This is line 3 echo line 1Nline 2Nline 3 | parallel -k --delimiter N echo This is This is line 1 This is line 2 This is line 3 printf "delimiter NUL line 1\0line 2\0line 3" | parallel -k -d '\0' echo delimiter NUL line 1 line 2 line 3 printf "delimiter TAB line 1\tline 2\tline 3" | parallel -k --delimiter '\t' echo delimiter TAB line 1 line 2 line 3 echo '### Test --max-chars and -s: Max number of chars in a line' ### Test --max-chars and -s: Max number of chars in a line (echo line 1;echo line 1;echo line 2) | parallel -k --max-chars 25 -X echo line 1 line 1 line 2 (echo line 1;echo line 1;echo line 2) | parallel -k -s 25 -X echo line 1 line 1 line 2 echo '### Test --no-run-if-empty and -r: This should give no output' ### Test --no-run-if-empty and -r: This should give no output echo " " | parallel -r echo echo " " | parallel --no-run-if-empty echo echo '### Test --help and -h: Help output (just check we get the same amount of lines)' ### Test --help and -h: Help output (just check we get the same amount of lines) echo Output from -h and --help Output from -h and --help parallel -h | wc -l 35 parallel --help | wc -l 35 echo '### Test --version: Version output (just check we get the same amount of lines)' ### Test --version: Version output (just check we get the same amount of lines) parallel --version | wc -l 11 echo '### Test --verbose and -t' ### Test --verbose and -t (echo b; echo c; echo f) | parallel -k -t echo {}ar 2>&1 >/dev/null echo bar echo car echo far (echo b; echo c; echo f) | parallel -k --verbose echo {}ar 2>&1 >/dev/null echo bar echo car echo far echo '### Test --show-limits' ### Test --show-limits (echo b; echo c; echo f) | parallel -k --show-limits echo {}ar Maximal size of command: 131071 Maximal used size of command: 131071 Execution of will continue now, and it will try to read its input and run commands; if this is not what you wanted to happen, please press CTRL-D or CTRL-C bar car far (echo b; echo c; echo f) | parallel -j1 -kX --show-limits -s 100 echo {}ar Maximal size of command: 131071 Maximal used size of command: 100 Execution of will continue now, and it will try to read its input and run commands; if this is not what you wanted to happen, please press CTRL-D or CTRL-C bar car far echo '### Test empty line as input' ### Test empty line as input echo | parallel echo empty input line empty input line echo '### Tests if (cat | sh) works' ### Tests if (cat | sh) works perl -e 'for(1..25) {print "echo a $_; echo b $_\n"}' | parallel 2>&1 | sort a 1 a 10 a 11 a 12 a 13 a 14 a 15 a 16 a 17 a 18 a 19 a 2 a 20 a 21 a 22 a 23 a 24 a 25 a 3 a 4 a 5 a 6 a 7 a 8 a 9 b 1 b 10 b 11 b 12 b 13 b 14 b 15 b 16 b 17 b 18 b 19 b 2 b 20 b 21 b 22 b 23 b 24 b 25 b 3 b 4 b 5 b 6 b 7 b 8 b 9 echo '### Test if xargs-mode works' ### Test if xargs-mode works perl -e 'for(1..25) {print "a $_\nb $_\n"}' | parallel echo 2>&1 | sort a 1 a 10 a 11 a 12 a 13 a 14 a 15 a 16 a 17 a 18 a 19 a 2 a 20 a 21 a 22 a 23 a 24 a 25 a 3 a 4 a 5 a 6 a 7 a 8 a 9 b 1 b 10 b 11 b 12 b 13 b 14 b 15 b 16 b 17 b 18 b 19 b 2 b 20 b 21 b 22 b 23 b 24 b 25 b 3 b 4 b 5 b 6 b 7 b 8 b 9 echo '### Test -q' ### Test -q parallel -kq perl -e '$ARGV[0]=~/^\S+\s+\S+$/ and print $ARGV[0],"\n"' ::: "a b" c "d e f" g "h i" a b h i echo '### Test -q {#}' ### Test -q {#} parallel -kq echo {#} ::: a b 1 2 parallel -kq echo {\#} ::: a b 1 2 parallel -kq echo {\\#} ::: a b {\#} a {\#} b echo '### Test long commands do not take up all memory' ### Test long commands do not take up all memory seq 1 100 | parallel -j0 -qv perl -e '$r=rand(shift);for($f=0;$f<$r;$f++){$a="a"x100};print shift,"\n"' 10000 2>/dev/null | sort 1 10 100 11 12 13 14 15 16 17 18 19 2 20 21 22 23 24 25 26 27 28 29 3 30 31 32 33 34 35 36 37 38 39 4 40 41 42 43 44 45 46 47 48 49 5 50 51 52 53 54 55 56 57 58 59 6 60 61 62 63 64 65 66 67 68 69 7 70 71 72 73 74 75 76 77 78 79 8 80 81 82 83 84 85 86 87 88 89 9 90 91 92 93 94 95 96 97 98 99 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 1 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 10 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 100 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 11 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 12 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 13 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 14 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 15 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 16 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 17 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 18 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 19 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 2 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 20 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 21 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 22 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 23 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 24 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 25 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 26 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 27 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 28 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 29 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 3 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 30 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 31 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 32 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 33 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 34 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 35 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 36 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 37 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 38 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 39 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 4 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 40 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 41 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 42 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 43 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 44 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 45 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 46 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 47 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 48 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 49 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 5 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 50 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 51 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 52 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 53 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 54 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 55 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 56 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 57 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 58 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 59 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 6 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 60 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 61 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 62 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 63 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 64 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 65 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 66 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 67 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 68 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 69 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 7 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 70 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 71 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 72 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 73 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 74 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 75 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 76 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 77 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 78 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 79 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 8 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 80 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 81 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 82 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 83 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 84 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 85 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 86 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 87 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 88 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 89 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 9 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 90 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 91 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 92 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 93 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 94 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 95 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 96 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 97 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 98 perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\)\{\$a=\"a\"x100\}\;print\ shift,\"\\n\" 10000 99 echo '### Test 0-arguments' ### Test 0-arguments seq 1 2 | parallel -k -n0 echo n0 n0 n0 seq 1 2 | parallel -k -L0 echo L0 L0 L0 seq 1 2 | parallel -k -N0 echo N0 N0 N0 echo '### Because of --tollef -l, then -l0 == -l1, sorry' ### Because of --tollef -l, then -l0 == -l1, sorry seq 1 2 | parallel -k -l0 echo l0 l0 1 l0 2 echo '### Test replace {}' ### Test replace {} seq 1 2 | parallel -k -N0 echo replace {} curlies replace curlies replace curlies echo '### Test arguments on commandline' ### Test arguments on commandline parallel -k -N0 echo args on cmdline ::: 1 2 args on cmdline args on cmdline echo '### Test --nice locally' ### Test --nice locally parallel --nice 1 -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b \nice -n1 /bin/bash -c PAR=a\ bash\ -c\ \"echo\ \ \\\$PAR\ b\" a b echo '### Test --nice remote' ### Test --nice remote stdout parallel --nice 1 -S .. -vv 'PAR=a bash -c "echo \$PAR {}"' ::: b | perl -pe 's/\S*parallel-server\S*/one-server/;s/[a-f0-9]{500,}/hex/;s/\d{5,8}/pId/g;' ssh one-server exec perl -e \\\$ENV\\\{\\\"PARALLEL_PID\\\"\\\}=\\\"pId\\\"\\\;\\\$ENV\\\{\\\"PARALLEL_SEQ\\\"\\\}=\\\"1\\\"\\\;\\\$bashfunc\\\ =\\\ \\\"\\\"\\\;@ARGV=\\\"\\\\\\\\nice\\\ -n1\\\ /bin/bash\\\ -c\\\ PAR=a\\\\\\\\\\\ bash\\\\\\\\\\\ -c\\\\\\\\\\\ \\\\\\\\\\\\\\\"echo\\\\\\\\\\\ \\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\$PAR\\\\\\\\\\\ b\\\\\\\\\\\\\\\"\\\"\\\;\\\$SIG\\\{CHLD\\\}=sub\\\{\\\$done=1\\\;\\\}\\\;\\\$pid=fork\\\;unless\\\(\\\$pid\\\)\\\{setpgrp\\\;exec\\\$ENV\\\{SHELL\\\},\\\"-c\\\",\\\(\\\$bashfunc.\\\"@ARGV\\\"\\\)\\\;die\\\"exec:\\\$\\\!\\\\n\\\"\\\;\\\}do\\\{\\\$s=\\\$s\\\<1\\\?0.001+\\\$s\\\*1.03:\\\$s\\\;select\\\(undef,undef,undef,\\\$s\\\)\\\;\\\}until\\\(\\\$done\\\|\\\|getppid==1\\\)\\\;kill\\\(SIGHUP,-\\\$\\\{pid\\\}\\\)unless\\\$done\\\;wait\\\;exit\\\(\\\$\\\?\\\&127\\\?128+\\\(\\\$\\\?\\\&127\\\):1+\\\$\\\?\\\>\\\>8\\\); a b echo '### Test distribute arguments at EOF to 2 jobslots' ### Test distribute arguments at EOF to 2 jobslots seq 1 92 | parallel -j+0 -kX -s 100 echo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 echo '### Test distribute arguments at EOF to 5 jobslots' ### Test distribute arguments at EOF to 5 jobslots seq 1 92 | parallel -j+3 -kX -s 100 echo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 echo '### Test distribute arguments at EOF to infinity jobslots' ### Test distribute arguments at EOF to infinity jobslots seq 1 92 | parallel -j0 -kX -s 100 echo 2>/dev/null 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 echo '### Test -N is not broken by distribution - single line' ### Test -N is not broken by distribution - single line seq 9 | parallel -N 10 echo 1 2 3 4 5 6 7 8 9 echo '### Test -N is not broken by distribution - two lines' ### Test -N is not broken by distribution - two lines seq 19 | parallel -k -N 10 echo 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 echo '### Test -N context replace' ### Test -N context replace seq 19 | parallel -k -N 10 echo a{}b a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b a11b a12b a13b a14b a15b a16b a17b a18b a19b echo '### Test -L context replace' ### Test -L context replace seq 19 | parallel -k -L 10 echo a{}b a1b a2b a3b a4b a5b a6b a7b a8b a9b a10b a11b a12b a13b a14b a15b a16b a17b a18b a19b