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
</tmp/parallel-decimal perl -e 'while(@ARGV) { sysseek(STDIN,shift,0) || die; $left = shift; while($read = sysread(STDIN,$buf, ($left > 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }'  0 0 0 129450 | (true)
</tmp/parallel-decimal perl -e 'while(@ARGV) { sysseek(STDIN,shift,0) || die; $left = shift; while($read = sysread(STDIN,$buf, ($left > 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }'  0 0 129450 129450 | (true)
</tmp/parallel-decimal perl -e 'while(@ARGV) { sysseek(STDIN,shift,0) || die; $left = shift; while($read = sysread(STDIN,$buf, ($left > 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }'  0 0 258900 129450 | (true)
</tmp/parallel-decimal perl -e 'while(@ARGV) { sysseek(STDIN,shift,0) || die; $left = shift; while($read = sysread(STDIN,$buf, ($left > 131072 ? 131072 : $left))){ $left -= $read; syswrite(STDOUT,$buf); } }'  0 0 388350 129450 | (true)
</tmp/parallel-decimal perl -e 'while(@ARGV) { sysseek(STDIN,shift,0) || die; $left = shift; while($read = sysread(STDIN,$buf, ($left > 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=/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 "cp \`which {}\` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;"   ::: ash bash csh dash fish fizsh ksh ksh93 mksh pdksh posh rbash rush rzsh sash sh static-sh tcsh yash zsh;   rm -f /tmp/SHELL /tmp/par*.par
shell? /bin/bash -c cp `which ash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which bash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which csh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which dash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c 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 cp `which ksh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which ksh93` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which mksh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which pdksh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which posh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which rbash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which rzsh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which sash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which sh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which tcsh` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c cp `which yash` /tmp/SHELL; /tmp/SHELL -c 'parallel -Dinit echo ::: 1' | grep which;
which bash => shell path /bin/bash
shell? /bin/bash -c 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 pdksh 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
shell? /bin/bash -c `which pdksh` -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 pdksh 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 pdksh => shell path /bin/pdksh
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 echo {} :::: - ::: a b |     perl -pe 's:(/tmp\S+/tms).....:$1XXXXX:;'
See output with: tmux -S /tmp/parallel-local22-tmpdir/tmsXXXXX attach