echo '### Test of xargs -m command lines > 130k'; seq 1 60000 | parallel -m -j1 echo a{}b{}c | tee >(wc >/tmp/awc$$) >(sort | md5sum) >/tmp/a$$; wait; CHAR=$(cat /tmp/a$$ | wc -c); LINES=$(cat /tmp/a$$ | wc -l); echo "Chars per line:" $(echo "$CHAR/$LINES" | bc); cat /tmp/awc$$; rm /tmp/a$$ /tmp/awc$$ ### Test of xargs -m command lines > 130k 14bacad229d8b0d32be0a2339c2a6af7 - Chars per line: 63437 11 119989 697810 echo '### Test of xargs -X command lines > 130k'; seq 1 60000 | parallel -X -j1 echo a{}b{}c | tee >(wc >/tmp/bwc$$) >(sort | (sleep 1; md5sum)) >/tmp/b$$; wait; CHAR=$(cat /tmp/b$$ | wc -c); LINES=$(cat /tmp/b$$ | wc -l); echo "Chars per line:" $(echo "$CHAR/$LINES" | bc); cat /tmp/bwc$$; rm /tmp/b$$ /tmp/bwc$$ ### Test of xargs -X command lines > 130k 81c0a85162c989c07f666b827a30ce52 - Chars per line: 62906 13 60000 817788 echo '### Test of xargs -m command lines > 130k'; seq 1 60000 | parallel -k -j1 -m echo | md5sum ### Test of xargs -m command lines > 130k 4c821f9aa0e42e53b4b5ff8cc809490b - echo '### This causes problems if we kill child processes'; # 2>/dev/null to avoid parallel: Warning: Starting 45 processes took > 2 sec. ### This causes problems if we kill child processes seq 2 40 | parallel -j 0 seq 1 10 2>/dev/null | sort | md5sum 437c0d47a99b9a7c5bcb1d132f94c2e6 - echo '### This causes problems if we kill child processes (II)'; # 2>/dev/null to avoid parallel: Warning: Starting 45 processes took > 2 sec. ### This causes problems if we kill child processes (II) seq 1 40 | parallel -j 0 seq 1 10 '| parallel -j 3 echo' 2>/dev/null | sort | md5sum d7fb96d6a56d4347bc24930a395c431a - echo '### Test -m'; (echo foo;echo bar) | parallel -j1 -m echo 1{}2{}3 A{}B{}C ### Test -m 1foo bar2foo bar3 Afoo barBfoo barC echo '### Test -X'; (echo foo;echo bar) | parallel -j1 -X echo 1{}2{}3 A{}B{}C ### Test -X 1foo2foo3 1bar2bar3 AfooBfooC AbarBbarC echo '### Bug before 2009-08-26 causing regexp compile error or infinite loop'; echo a | parallel -qX echo "'"{}"' " ### Bug before 2009-08-26 causing regexp compile error or infinite loop 'a' echo '### Bug before 2009-08-26 causing regexp compile error or infinite loop (II)'; echo a | parallel -qX echo "'{}'" ### Bug before 2009-08-26 causing regexp compile error or infinite loop (II) 'a' echo '### bug #42041: Implement $PARALLEL_JOBSLOT' ### bug #42041: Implement $PARALLEL_JOBSLOT parallel -k --slotreplace // -j2 sleep 1\;echo // ::: {1..4} | sort 1 1 2 2 parallel -k -j2 sleep 1\;echo {%} ::: {1..4} | sort 1 1 2 2 echo '### bug #42363: --pipepart and --fifo/--cat does not work' ### bug #42363: --pipepart and --fifo/--cat does not work seq 100 > /tmp/bug42363; parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:(/tmp\S+par).....:${1}XXXXX:'; parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:(/tmp\S+par).....:${1}XXXXX:'; rm /tmp/bug42363 14 14 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 9 9 28 /tmp/parallel-local22-tmpdir/parXXXXX 14 14 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 11 11 33 /tmp/parallel-local22-tmpdir/parXXXXX 9 9 28 /tmp/parallel-local22-tmpdir/parXXXXX echo '### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile' ### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile parallel --pipepart -a /etc/passwd -L 1 should not be run parallel: Error: --pipepart is incompatible with --max-replace-args, --max-lines, and -L. parallel --pipepart -a /etc/passwd -N 1 should not be run parallel: Error: --pipepart is incompatible with --max-replace-args, --max-lines, and -L. parallel --pipepart -a /etc/passwd -l 1 should not be run parallel: Error: --pipepart is incompatible with --max-replace-args, --max-lines, and -L. echo '### bug #42893: --block should not cause decimals in cat_partial' ### bug #42893: --block should not cause decimals in cat_partial seq 100000 >/tmp/parallel-decimal; parallel --dry-run -kvv --pipepart --block 0.12345M -a /tmp/parallel-decimal true; rm /tmp/parallel-decimal 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }' 0 0 0 129450 | (true) 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }' 0 0 129450 129450 | (true) 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }' 0 0 258900 129450 | (true) 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }' 0 0 388350 129450 | (true) 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }' 0 0 517800 71095 | (true) echo '### bug #42902: profiles containing arguments with space' ### bug #42902: profiles containing arguments with space echo "--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' " > ~/.parallel/FULLPATH; parallel -JFULLPATH echo FULLPATH ::: $0 /bin/bash=/bin/bash PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' -v" parallel echo FULLPATH ::: $0 echo /bin/bash\=/bin/bash /bin/bash=/bin/bash PARALLEL="--rpl 'FULLPATH chomp(\$_=\"/bin/bash=\".\`readlink -f \$_\`);' perl -e \'print \\\"@ARGV\\\n\\\"\' " parallel With script in \\\$PARALLEL FULLPATH ::: . With script in $PARALLEL /bin/bash=/mnt/4tb/home/tange/privat/parallel/testsuite echo '### bug #42892: parallel -a nonexiting --pipepart' ### bug #42892: parallel -a nonexiting --pipepart parallel --pipepart -a nonexisting wc parallel: Error: nonexisting is neither a file nor a block device echo '### bug #42913: Dont use $SHELL but the shell currently running' ### bug #42913: Dont use $SHELL but the shell currently running echo '## Unknown shell => $SHELL (bash)' ## Unknown shell => $SHELL (bash) parallel -kj1 "rm -f /tmp/SHELL; cp \`which {}\` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;" ::: ash bash csh dash fish fizsh ksh ksh93 mksh posh rbash rush rzsh sash sh static-sh tcsh yash zsh; rm -f /tmp/SHELL /tmp/par*.par shell? /bin/bash -c rm -f /tmp/SHELL; cp `which ash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which bash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which csh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which dash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which fish` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash which zsh => shell path /usr/bin/zsh shell? /bin/bash -c rm -f /tmp/SHELL; cp `which ksh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which ksh93` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which mksh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which posh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which rbash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which rzsh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which sash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which sh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which tcsh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which yash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c rm -f /tmp/SHELL; cp `which zsh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash Local configuration error occurred. Contact the systems administrator for further assistance. SHELL: applet not found echo '## Known shells -c' ## Known shells -c parallel -k "\`which {}\` -c 'parallel -Dinit echo ::: 1' | grep which;" ::: ash bash csh dash fdsh fish fizsh ksh ksh93 mksh posh rbash rush rzsh sash sh static-sh tcsh yash zsh; rm -f /tmp/par*.par which ash => shell path /bin/ash shell? /bin/bash -c `which bash` -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash which csh => shell path /bin/csh which dash => shell path /bin/dash which fdsh => shell path /usr/bin/fdsh which fish => shell path /usr/bin/fish which zsh => shell path /usr/bin/zsh shell? /bin/bash -c `which ksh` -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c `which ksh93` -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c `which mksh` -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash which posh => shell path /bin/posh shell? /bin/bash -c `which rbash` -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c `which rzsh` -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash which sash => shell path /bin/sash which sh => shell path /bin/sh which static-sh => shell path /bin/static-sh which tcsh => shell path /usr/bin/tcsh shell? /bin/bash -c `which yash` -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash shell? /bin/bash -c `which zsh` -c 'parallel -Dinit echo ::: 1' | grep which; which bash => shell path /bin/bash Local configuration error occurred. Contact the systems administrator for further assistance. echo '## Known shells |' ## Known shells | parallel -k "echo 'parallel -Dinit echo ::: 1' | \`which {}\` | grep which;" ::: ash bash csh dash fdsh fish fizsh ksh ksh93 mksh posh rbash rush rzsh sash sh static-sh tcsh yash zsh; rm -f /tmp/par*.par which ash => shell path /bin/ash which bash => shell path /bin/bash which csh => shell path /bin/csh which dash => shell path /bin/dash which fdsh => shell path /usr/bin/fdsh which fish => shell path /usr/bin/fish which zsh => shell path /usr/bin/zsh which ksh => shell path /usr/bin/ksh which ksh93 => shell path /bin/ksh93 which mksh => shell path /bin/mksh which posh => shell path /bin/posh which rbash => shell path /bin/rbash which rzsh => shell path /bin/rzsh which sash => shell path /bin/sash which sh => shell path /bin/sh which static-sh => shell path /bin/static-sh which tcsh => shell path /usr/bin/tcsh which yash => shell path /usr/bin/yash which zsh => shell path /usr/bin/zsh Local configuration error occurred. Contact the systems administrator for further assistance. echo '## Started directly from perl' ## Started directly from perl perl -e 'system(qw(parallel -Dinit echo ::: 1))' | grep which; rm -f /tmp/par*.par shell? /bin/bash -c perl -e 'system(qw(parallel -Dinit echo ::: 1))' | grep which; rm -f /tmp/par*.par which bash => shell path /bin/bash echo '### added transfersize/returnsize to local jobs' ### added transfersize/returnsize to local jobs echo '### normal' ### normal seq 100 111 | parallel --joblog /dev/stderr seq {} '|' pv -qL100 2>&1 >/dev/null | cut -f 5-7 | sort 0 292 0 0 296 0 0 300 0 0 304 0 0 308 0 0 312 0 0 316 0 0 320 0 0 324 0 0 328 0 0 332 0 0 336 0 Send Receive Exitval echo '### --line-buffer' ### --line-buffer seq 100 111 | parallel --joblog /dev/stderr --line-buffer seq {} '|' pv -qL100 2>&1 >/dev/null | cut -f 5-7 | sort 0 292 0 0 296 0 0 300 0 0 304 0 0 308 0 0 312 0 0 316 0 0 320 0 0 324 0 0 328 0 0 332 0 0 336 0 Send Receive Exitval echo '### --tag' ### --tag seq 100 111 | parallel --tag --joblog /dev/stderr seq {} '|' pv -qL100 2>&1 >/dev/null | cut -f 5-7 | sort 0 292 0 0 296 0 0 300 0 0 304 0 0 308 0 0 312 0 0 316 0 0 320 0 0 324 0 0 328 0 0 332 0 0 336 0 Send Receive Exitval echo '### --tag --line-buffer' ### --tag --line-buffer seq 100 111 | parallel --tag --line-buffer --joblog /dev/stderr seq {} '|' pv -qL100 2>&1 >/dev/null | cut -f 5-7 | sort 0 292 0 0 296 0 0 300 0 0 304 0 0 308 0 0 312 0 0 316 0 0 320 0 0 324 0 0 328 0 0 332 0 0 336 0 Send Receive Exitval echo '### --files' ### --files seq 100 111 | parallel --files --joblog /dev/stderr seq {} '|' pv -qL100 2>&1 >/dev/null | cut -f 5-7 | sort 0 292 0 0 296 0 0 300 0 0 304 0 0 308 0 0 312 0 0 316 0 0 320 0 0 324 0 0 328 0 0 332 0 0 336 0 Send Receive Exitval echo '### --files --tag' ### --files --tag seq 100 111 | parallel --files --tag --joblog /dev/stderr seq {} '|' pv -qL100 2>&1 >/dev/null | cut -f 5-7 | sort 0 292 0 0 296 0 0 300 0 0 304 0 0 308 0 0 312 0 0 316 0 0 320 0 0 324 0 0 328 0 0 332 0 0 336 0 Send Receive Exitval echo '### --pipe' ### --pipe seq 1000 | parallel --joblog /dev/stderr --block 1111 --pipe pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort 1108 1108 0 1108 1108 0 1108 1108 0 569 569 0 Send Receive Exitval echo '### --pipe --line-buffer' ### --pipe --line-buffer seq 1000 | parallel --joblog /dev/stderr --block 1111 --pipe --line-buffer pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort 1108 1108 0 1108 1108 0 1108 1108 0 569 569 0 Send Receive Exitval echo '### --pipe --tag' ### --pipe --tag seq 1000 | parallel --joblog /dev/stderr --block 1111 --pipe --tag pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort 1108 1108 0 1108 1108 0 1108 1108 0 569 569 0 Send Receive Exitval echo '### --pipe --tag --line-buffer' ### --pipe --tag --line-buffer seq 1000 | parallel --joblog /dev/stderr --block 1111 --pipe --tag --line-buffer pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort 1108 1108 0 1108 1108 0 1108 1108 0 569 569 0 Send Receive Exitval echo '### --files --pipe' ### --files --pipe seq 1000 | parallel --joblog /dev/stderr --block 1111 --files --pipe pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort 1108 1108 0 1108 1108 0 1108 1108 0 569 569 0 Send Receive Exitval echo '### --files --pipe --tag' ### --files --pipe --tag seq 1000 | parallel --joblog /dev/stderr --block 1111 --files --pipe --tag pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort 1108 1108 0 1108 1108 0 1108 1108 0 569 569 0 Send Receive Exitval echo '### --pipe --round-robin' ### --pipe --round-robin seq 1000 | parallel --joblog /dev/stderr --block 1111 -j2 --pipe --round-robin pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort 1677 1677 0 2216 2216 0 Send Receive Exitval echo '### --tmux test - check termination' ### --tmux test - check termination perl -e 'map {printf "$_%o%c\n",$_,$_}1..255' | stdout parallel --tmux 'sleep 0.2;echo {}' :::: - ::: a b | perl -pe 's:(/tmp\S+/tms).....:$1XXXXX:;' See output with: tmux -S /tmp/parallel-local22-tmpdir/tmsXXXXX attach