env_parallel.fish: Initial support for --session.

parallel: 'true | parallel --shuf echo' fixed.
testsuite: Updates due to Ubuntu 18.04.
parallel: Fixed bug #54869: Long lines break.
This commit is contained in:
Ole Tange 2018-10-23 00:46:38 +02:00
parent 4f0422d9b0
commit 001d9d0f66
66 changed files with 700 additions and 378 deletions

View file

@ -1,5 +1,7 @@
People who have helped GNU Parallel different ways. People who have helped GNU Parallel different ways.
Jakub Kulík: Maintaining GNU Parallel for Solaris-userland.
Rich Burridge: Maintaining GNU Parallel for Solaris-userland.
Jonathan Kamens: Bug patch for chomp. Jonathan Kamens: Bug patch for chomp.
John Rusnak: Feedback on all documentation. John Rusnak: Feedback on all documentation.
FrithMartin: Bug patch for orphan blocks. FrithMartin: Bug patch for orphan blocks.

View file

@ -120,6 +120,7 @@ monitorman:
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &' inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &'
testurls: testurls:
grep -h -Po 'https?://[^ $$<>")}]+' src/* | perl -pe 's/(&gt|\{).*//;s/\\//g;s/&amp;/&/g;s/&#.*//;'"s/'.*//" | sort -u | parallel -j0 --tag 'wget -qm -l1 -Q1 {}; echo $$?' mkdir -p urls
cd urls && grep -v '(dead)' ../src/* | grep -h -Po 'https?://[^ $$<>")}]+' | perl -pe 's/(&gt|\{).*//;s/\\-/-/g;s/\\n//g;s/&amp;/&/g;s/&#.*//;'"s/'.*//" | sort -u | egrep -v 'example.com|##|\*\(' | parallel -j0 --timeout 33 --bar --tag --retries 3 neno wget -m -l1 -Q1 '{=$$_=Q($$_)=}'
EXTRA_DIST = CITATION CREDITS cc-by-sa.txt fdl.txt EXTRA_DIST = CITATION CREDITS cc-by-sa.txt fdl.txt

View file

@ -868,7 +868,8 @@ monitorman:
inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &' inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . | parallel -uj1 'echo {=/\.pod$$/ or skip()=};make -j && sudo make install; pdfman {/.} &'
testurls: testurls:
grep -h -Po 'https?://[^ $$<>")}]+' src/* | perl -pe 's/(&gt|\{).*//;s/\\//g;s/&amp;/&/g;s/&#.*//;'"s/'.*//" | sort -u | parallel -j0 --tag 'wget -qm -l1 -Q1 {}; echo $$?' mkdir -p urls
cd urls && grep -v '(dead)' ../src/* | grep -h -Po 'https?://[^ $$<>")}]+' | perl -pe 's/(&gt|\{).*//;s/\\-/-/g;s/\\n//g;s/&amp;/&/g;s/&#.*//;'"s/'.*//" | sort -u | egrep -v 'example.com|##|\*\(' | parallel -j0 --timeout 33 --bar --tag --retries 3 neno wget -m -l1 -Q1 '{=$$_=Q($$_)=}'
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.

View file

@ -39,7 +39,8 @@ measure() {
PATH=/tmp/bin:$PATH PATH=/tmp/bin:$PATH
cd /tmp/bin cd /tmp/bin
ls parallel-* | parallel --shuf -j$CORES --joblog ~/tmp/joblog$CORES-$INNER-$OUTER.csv 'seq '$INNER' | {2} true' :::: <(seq $OUTER) - ls parallel-* |
parallel --shuf -j$CORES --joblog ~/tmp/joblog$CORES-$INNER-$OUTER.csv 'seq '$INNER' | {2} true' :::: <(seq $OUTER) -
killall forever killall forever
@ -49,7 +50,7 @@ measure() {
pdf("/tmp/boxplot.pdf"); pdf("/tmp/boxplot.pdf");
par(cex.axis=0.5); par(cex.axis=0.5);
boxplot(JobRuntime/$INNER*1000~Command,data=jl,las=2,outline=F, boxplot(JobRuntime/$INNER*1000~Command,data=jl,las=2,outline=F,
ylab="milliseconds/job",main="GNU Parallel performance of different versions\n$OUTER trials each running $INNER jobs"); ylab="milliseconds/job",main="GNU Parallel overhead for different versions\n$OUTER trials each running $INNER jobs");
_ _
cp /tmp/boxplot.pdf $HOME/tmp/boxplot-j$CORES-${MHZ}MHz-$OUTER-${INNER}v$VERSION.pdf cp /tmp/boxplot.pdf $HOME/tmp/boxplot-j$CORES-${MHZ}MHz-$OUTER-${INNER}v$VERSION.pdf
evince /tmp/boxplot.pdf evince /tmp/boxplot.pdf

View file

@ -205,28 +205,23 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm> stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20180922 ('Danske') released <<[stable]>> Subject: GNU Parallel 20181022 ('peoples vote cumex khashoggi Sulawesi(Palu)') released <<[stable]>>
GNU Parallel 20180922 ('Danske') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/ GNU Parallel 20181022 ('') <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
<<No new functionality was introduced so this is a good candidate for a stable release.>> <<No new functionality was introduced so this is a good candidate for a stable release.>>
Quote of the month: Quote of the month:
I know I'm late to the party but GNU Parallel is truly amazing!
-- Sam Diaz-Munoz @sociovirology
New in this release: New in this release:
* Minix is supported again. * env_parallel.fish: --session support (alpha quality)
* Updated graph showing GNU Parallel's overhead per job for each version. https://www.gnu.org/software/parallel/process-time-j2-1700MHz-3000-1000.pdf * GNU Parallel was cited in: High-throughput sequencing of murine immunoglobulin heavy chain repertoires using single side unique molecular identifiers on an Ion Torrent PGM https://doi.org/10.18632/oncotarget.25493
* Intro to Computing at CARC includes introduction to GNU Parallel http://carc.unm.edu/education--training/workshops-and-seminars.html * GNU parallel in Japanese Wikipedia https://ja.wikipedia.org/wiki/GNU_parallel
* Fast-GBS uses GNU Parallel https://bitbucket.org/jerlar73/fast-gbs/wiki/Home * Outils de paramétrisation des tâches: lots de tâches, GNU Parallel https://www.eventbrite.ca/e/inscription-outils-de-parametrisation-des-taches-lots-de-taches-gnu-parallel-et-bqtools-midi-conference-de-50271076142
* Belgium at 10 m resolution in July 2018 http://www.cesbio.ups-tlse.fr/multitemp/?p=14116
* Bug fixes and man page updates. * Bug fixes and man page updates.
@ -253,7 +248,7 @@ Walk through the tutorial (man parallel_tutorial). Your commandline will love yo
When using programs that use GNU Parallel to process data for publication please cite: When using programs that use GNU Parallel to process data for publication please cite:
O. Tange (2018): GNU Parallel 2018, April 2018, https://doi.org/10.5281/zenodo.1146014. O. Tange (2018): GNU Parallel 2018, March 2018, https://doi.org/10.5281/zenodo.1146014.
If you like GNU Parallel: If you like GNU Parallel:

View file

@ -363,7 +363,7 @@ _parset_main() {
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") | ($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
# var1=`cat tmpfile1; rm tmpfile1` # var1=`cat tmpfile1; rm tmpfile1`
# var2=`cat tmpfile2; rm tmpfile2` # var2=`cat tmpfile2; rm tmpfile2`
parallel -q echo {2}='`cat {1}; rm {1}`' :::: - :::+ $( parallel --plain -q echo {2}='`cat {1}; rm {1}`' :::: - :::+ $(
echo "$_parset_NAME" | perl -pe 's/,/ /g' echo "$_parset_NAME" | perl -pe 's/,/ /g'
) )
); );

View file

@ -83,6 +83,7 @@ else
# Make a tmpfile for the variable definitions + alias # Make a tmpfile for the variable definitions + alias
set _tMpaLLfILe=`_tempfile` set _tMpaLLfILe=`_tempfile`
foreach _vARnAmE ($_vARnAmES); foreach _vARnAmE ($_vARnAmES);
# These 3 lines break in csh version 20110502-3
# if not defined: next # if not defined: next
eval if'(! $?'$_vARnAmE') continue' eval if'(! $?'$_vARnAmE') continue'
# if $#myvar <= 1 echo scalar_myvar=$var # if $#myvar <= 1 echo scalar_myvar=$var

View file

@ -42,6 +42,17 @@
function env_parallel function env_parallel
# env_parallel.fish # env_parallel.fish
# --session
perl -e 'exit grep { /^--session/ } @ARGV' -- $argv; or begin;
setenv PARALLEL_IGNORED_NAMES (
begin;
functions -n
set -n;
end | perl -pe 's/\n/,/g';
)
return 0
end;
setenv PARALLEL_ENV ( setenv PARALLEL_ENV (
begin; begin;
set _grep_REGEXP ( set _grep_REGEXP (
@ -71,10 +82,14 @@ function env_parallel
"Run \"parallel --record-env\" in a clean environment first.\n"; "Run \"parallel --record-env\" in a clean environment first.\n";
} else { } else {
chomp(@ignored_vars = <IN>); chomp(@ignored_vars = <IN>);
$vars = join "|",map { quotemeta $_ } @ignored_vars;
print $vars ? "($vars)" : "(,,nO,,VaRs,,)";
} }
} }
if($ENV{PARALLEL_IGNORED_NAMES}) {
push @ignored_vars, split/,/, $ENV{PARALLEL_IGNORED_NAMES};
chomp @ignored_vars;
}
$vars = join "|",map { quotemeta $_ } @ignored_vars;
print $vars ? "($vars)" : "(,,nO,,VaRs,,)";
' -- $argv; ' -- $argv;
end; end;
) )

View file

@ -51,7 +51,7 @@ env_parallel() {
} }
_ignore_HARDCODED() { _ignore_HARDCODED() {
# These names cannot be detected # These names cannot be detected
echo '([-\?\#\!\$\*\@\_0]|zsh_eval_context|ZSH_EVAL_CONTEXT|LINENO|IFS|commands|functions|options|aliases|EUID|EGID|UID|GID|dis_patchars|patchars|terminfo|galiases|keymaps|parameters|jobdirs|dirstack|functrace|funcsourcetrace|zsh_scheduled_events|dis_aliases|dis_reswords|dis_saliases|modules|reswords|saliases|widgets|userdirs|historywords|nameddirs|termcap|dis_builtins|dis_functions|jobtexts|funcfiletrace|dis_galiases|builtins|history|jobstates|funcstack)' echo '([-\?\#\!\$\*\@\_0]|zsh_eval_context|ZSH_EVAL_CONTEXT|LINENO|IFS|commands|functions|options|aliases|EUID|EGID|UID|GID|dis_patchars|patchars|terminfo|galiases|keymaps|parameters|jobdirs|dirstack|functrace|funcsourcetrace|zsh_scheduled_events|dis_aliases|dis_reswords|dis_saliases|modules|reswords|saliases|widgets|userdirs|historywords|nameddirs|termcap|dis_builtins|dis_functions|jobtexts|funcfiletrace|dis_galiases|builtins|history|jobstates|funcstack|run-help)'
} }
_ignore_READONLY() { _ignore_READONLY() {
typeset -pr | perl -e '@r = map { typeset -pr | perl -e '@r = map {

View file

@ -24,7 +24,7 @@
use strict; use strict;
use Getopt::Long; use Getopt::Long;
$Global::progname="niceload"; $Global::progname="niceload";
$Global::version = 20180922; $Global::version = 20180923;
Getopt::Long::Configure("bundling","require_order"); Getopt::Long::Configure("bundling","require_order");
get_options_from_array(\@ARGV) || die_usage(); get_options_from_array(\@ARGV) || die_usage();
if($opt::version) { if($opt::version) {

View file

@ -1452,8 +1452,8 @@ sub parse_options {
# Running 'parallel --citation' one single time takes less than 10 # Running 'parallel --citation' one single time takes less than 10
# seconds, and will silence the citation notice for future # seconds, and will silence the citation notice for future
# runs. If that is too much trouble for you, why not use one of # runs. If that is too much trouble for you, why not use one of
# the alternatives instead? See a list in: 'man # the alternatives instead?
# parallel_alternatives' # See a list in: 'man parallel_alternatives'
citation_notice(); citation_notice();
parse_halt(); parse_halt();
@ -1554,7 +1554,7 @@ sub check_invalid_option_combinations {
sub init_globals { sub init_globals {
# Defaults: # Defaults:
$Global::version = 20180922; $Global::version = 20180923;
$Global::progname = 'parallel'; $Global::progname = 'parallel';
$Global::infinity = 2**31; $Global::infinity = 2**31;
$Global::debug = 0; $Global::debug = 0;
@ -7156,7 +7156,7 @@ sub total_jobs {
while($record = $record_queue->get()) { while($record = $record_queue->get()) {
push @arg_records, $record; push @arg_records, $record;
} }
if($opt::shuf) { if($opt::shuf and @arg_records) {
my $i = @arg_records; my $i = @arg_records;
while (--$i) { while (--$i) {
my $j = int rand($i+1); my $j = int rand($i+1);
@ -10104,7 +10104,7 @@ sub replace_placeholders {
# New context group # New context group
@ctxgroup=(); @ctxgroup=();
} }
if($t eq "\0spc") { if($t eq "\0spc" or $t eq " ") {
CORE::push @replaced,$t; CORE::push @replaced,$t;
} else { } else {
CORE::push @ctxgroup,$t; CORE::push @ctxgroup,$t;

View file

@ -2363,6 +2363,11 @@ open a tty for the job.
You can of course override B<-j1> and B<-u>. You can of course override B<-j1> and B<-u>.
Using B<--tty> unfortunately means that GNU B<parallel> cannot kill
the jobs (with B<--timeout>, B<--memfree>, or B<--halt>). This is due
to GNU B<parallel> giving each child its own process group, which is
then killed. Process groups are dependant on the tty.
=item B<--tag> =item B<--tag>
@ -3053,6 +3058,14 @@ downloads 10 videos in parallel.
B<{=> and B<=}> mark a perl expression. B<pQ> perl-quotes the B<{=> and B<=}> mark a perl expression. B<pQ> perl-quotes the
string. B<date +%FT%T> is the date in ISO8601 with time. string. B<date +%FT%T> is the date in ISO8601 with time.
=head1 EXAMPLE: Save output in ISO8601 dirs
Save output from B<ps aux> every second into dirs named
yyyy-mm-ddThh:mm:ss+zz:zz.
seq 1000 | parallel -N0 -j1 --delay 1 \
--results '{= $_=`date -Isec`; chomp=}/' ps aux
=head1 EXAMPLE: Digital clock with "blinking" : =head1 EXAMPLE: Digital clock with "blinking" :

View file

@ -13,6 +13,16 @@ There are a lot programs with some of the functionality of GNU
B<parallel>. GNU B<parallel> strives to include the best of the B<parallel>. GNU B<parallel> strives to include the best of the
functionality without sacrificing ease of use. functionality without sacrificing ease of use.
B<parallel> has existed since 2002 and as GNU B<parallel> since
2010. A lot of the alternatives have not had the vitality to survive
that long, but have come and gone during that time.
GNU B<parallel> is actively maintained with a new release every month
since 2010. Most other alternatives are fleeting interests of the
developers with irregular releases and only maintained for a few
years.
=head2 SUMMARY TABLE =head2 SUMMARY TABLE
The following features are in some of the comparable tools: The following features are in some of the comparable tools:
@ -452,15 +462,16 @@ B<dxargs> does not deal well with more simultaneous jobs than SSHD's
MaxStartups. B<dxargs> is only built for remote run jobs, but does not MaxStartups. B<dxargs> is only built for remote run jobs, but does not
support transferring of files. support transferring of files.
http://www.semicomplete.com/blog/geekery/distributed-xargs.html https://web.archive.org/web/20120518070250/http://www.semicomplete.com/blog/geekery/distributed-xargs.html
=head2 DIFFERENCES BETWEEN mdm/middleman AND GNU Parallel =head2 DIFFERENCES BETWEEN mdm/middleman AND GNU Parallel
middleman(mdm) is also a tool for running jobs in parallel. middleman(mdm) is also a tool for running jobs in parallel.
Here are the shellscripts of http://mdm.berlios.de/usage.html ported Here are the shellscripts of
to GNU B<parallel>: https://web.archive.org/web/20110728064735/http://mdm.berlios.de/usage.html
ported to GNU B<parallel>:
seq 19 | parallel buffon -o - | sort -n > result seq 19 | parallel buffon -o - | sort -n > result
cat files | parallel cmd cat files | parallel cmd
@ -900,6 +911,9 @@ These do something different from GNU B<parallel>
(seq 10; sleep 5; echo 2) | time parallel -j2 'sleep 2; echo' (seq 10; sleep 5; echo 2) | time parallel -j2 'sleep 2; echo'
tail -f /var/log/syslog | parallel echo tail -f /var/log/syslog | parallel echo
Most of the examples from the book GNU Parallel 2018 do not work, thus
Rust parallel is not close to being a compatible replacement.
Rust parallel has no remote facilities. Rust parallel has no remote facilities.
It uses /tmp/parallel for tmp files and does not clean up if It uses /tmp/parallel for tmp files and does not clean up if
@ -1514,10 +1528,203 @@ Here are the 5 examples converted to GNU Parallel:
https://github.com/soveran/map https://github.com/soveran/map
=head2 DIFFERENCES BETWEEN loop AND GNU Parallel
B<loop> mixes stdout and stderr:
loop 'ls /no-such-file' >/dev/null
B<loop>'s replacement string B<$ITEM> does not quote strings:
echo 'two spaces' | loop 'echo $ITEM'
B<loop> cannot run functions:
myfunc() { echo joe; }
export -f myfunc
loop 'myfunc this fails'
Some of the examples from https://github.com/Miserlou/Loop/ can be
emulated with GNU B<parallel>:
# A couple of functions will make the code easier to read
$ loopy() {
yes | parallel -uN0 -j1 "$@"
}
$ export -f loopy
$ time_out() {
parallel -uN0 -q --timeout "$@" ::: 1
}
$ match() {
perl -0777 -ne 'grep /'"$1"'/,$_ and print or exit 1'
}
$ export -f match
$ loop 'ls' --every 10s
$ loopy --delay 10s ls
$ loop 'touch $COUNT.txt' --count-by 5
$ loopy touch '{= $_=seq()*5 =}'.txt
$ loop --until-contains 200 -- ./get_response_code.sh --site mysite.biz`
$ loopy --halt now,success=1 './get_response_code.sh --site mysite.biz |
match 200'
$ loop './poke_server' --for-duration 8h
$ time_out 8h loopy ./poke_server
$ loop './poke_server' --until-success
$ loopy --halt now,success=1 ./poke_server
$ cat files_to_create.txt | loop 'touch $ITEM'
$ cat files_to_create.txt | parallel touch {}
$ loop 'ls' --for-duration 10min --summary
# --joblog is somewhat more verbose than --summary
$ time_out 10m loopy --joblog my.log ./poke_server; cat my.log
$ loop 'echo hello'
$ loopy echo hello
$ loop 'echo $COUNT'
# GNU Parallel counts from 1
$ loopy echo {#}
# Counting from 0 can be forced
$ loopy echo '{= $_=seq()-1 =}'
$ loop 'echo $COUNT' --count-by 2
$ loopy echo '{= $_=2*(seq()-1) =}'
$ loop 'echo $COUNT' --count-by 2 --offset 10
$ loopy echo '{= $_=10+2*(seq()-1) =}'
$ loop 'echo $COUNT' --count-by 1.1
# GNU Parallel rounds 3.3000000000000003 to 3.3
$ loopy echo '{= $_=1.1*(seq()-1) =}'
$ loop 'echo $COUNT $ACTUALCOUNT' --count-by 2
$ loopy echo '{= $_=2*(seq()-1) =} {#}'
$ loop 'echo $COUNT' --num 3 --summary
# --joblog is somewhat more verbose than --summary
$ seq 3 | parallel --joblog my.log echo; cat my.log
$ loop 'ls -foobarbatz' --num 3 --summary
# --joblog is somewhat more verbose than --summary
$ seq 3 | parallel --joblog my.log -N0 ls -foobarbatz; cat my.log
$ loop 'echo $COUNT' --count-by 2 --num 50 --only-last
# Can be emulated by running 2 jobs
$ seq 49 | parallel echo '{= $_=2*(seq()-1) =}' >/dev/null
$ echo 50| parallel echo '{= $_=2*(seq()-1) =}'
$ loop 'date' --every 5s
$ loopy --delay 5s date
$ loop 'date' --for-duration 8s --every 2s
$ time_out 8s loopy --delay 2s date
$ loop 'date -u' --until-time '2018-05-25 20:50:00' --every 5s
$ seconds=$((`date -d 2019-05-25T20:50:00 +%s` - `date +%s`))s
$ time_out $seconds loopy --delay 5s date -u
$ loop 'echo $RANDOM' --until-contains "666"
$ loopy --halt now,success=1 'echo $RANDOM | match 666'
$ loop 'if (( RANDOM % 2 )); then
(echo "TRUE"; true);
else
(echo "FALSE"; false);
fi' --until-success
$ loopy --halt now,success=1 'if (( $RANDOM % 2 )); then
(echo "TRUE"; true);
else
(echo "FALSE"; false);
fi'
$ loop 'if (( RANDOM % 2 )); then
(echo "TRUE"; true);
else
(echo "FALSE"; false);
fi' --until-error
$ loopy --halt now,fail=1 'if (( $RANDOM % 2 )); then
(echo "TRUE"; true);
else
(echo "FALSE"; false);
fi'
$ loop 'date' --until-match "(\d{4})"
$ loopy --halt now,success=1 'date | match [0-9][0-9][0-9][0-9]'
$ loop 'echo $ITEM' --for red,green,blue
$ parallel echo ::: red green blue
$ cat /tmp/my-list-of-files-to-create.txt | loop 'touch $ITEM'
$ cat /tmp/my-list-of-files-to-create.txt | parallel touch
$ ls | loop 'cp $ITEM $ITEM.bak'; ls
$ ls | parallel cp {} {}.bak; ls
$ loop 'echo $ITEM | tr a-z A-Z' -i
$ parallel 'echo {} | tr a-z A-Z'
# Or more efficiently:
$ parallel --pipe tr a-z A-Z
$ loop 'echo $ITEM' --for "`ls`"
$ parallel echo {} ::: "`ls`"
$ ls | loop './my_program $ITEM' --until-success;
$ ls | parallel --halt now,success=1 ./my_program {}
$ ls | loop './my_program $ITEM' --until-fail;
$ ls | parallel --halt now,fail=1 ./my_program {}
$ ./deploy.sh;
loop 'curl -sw "%{http_code}" http://coolwebsite.biz' \
--every 5s --until-contains 200;
./announce_to_slack.sh
$ ./deploy.sh;
loopy --delay 5s --halt now,success=1 \
'curl -sw "%{http_code}" http://coolwebsite.biz | match 200';
./announce_to_slack.sh
$ loop "ping -c 1 mysite.com" --until-success; ./do_next_thing
$ loopy --halt now,success=1 ping -c 1 mysite.com; ./do_next_thing
$ ./create_big_file -o my_big_file.bin;
loop 'ls' --until-contains 'my_big_file.bin';
./upload_big_file my_big_file.bin
# inotifywait is a better tool to detect file system changes.
# It can even make sure the file is complete
# so you are not uploading an incomplete file
$ inotifywait -qmre MOVED_TO -e CLOSE_WRITE --format %w%f . |
grep my_big_file.bin
$ ls | loop 'cp $ITEM $ITEM.bak'
$ ls | parallel cp {} {}.bak
$ loop './do_thing.sh' --every 15s --until-success --num 5
$ parallel --retries 5 --delay 15s ::: ./do_thing.sh
https://github.com/Miserlou/Loop/ (Last checked: 2018-10)
=head2 DIFFERENCES BETWEEN lorikeet AND GNU Parallel
B<lorikeet> can run jobs in parallel. It does this based on a
dependency graph described in a file, so this is similar to B<make>.
https://github.com/cetra3/lorikeet (Last checked: 2018-10)
=head2 Todo =head2 Todo
Url for spread Url for spread
https://github.com/john01dav/spp
https://github.com/amritb/with-this.git
https://github.com/fd0/machma Requires Go >= 1.7. https://github.com/fd0/machma Requires Go >= 1.7.
https://github.com/k-bx/par requires Haskell to work. This limits the https://github.com/k-bx/par requires Haskell to work. This limits the

View file

@ -1229,9 +1229,11 @@ cost work and which have not been tested are, however, unlikely to be
prioritized. prioritized.
Running B<parallel --citation> one single time takes less than 10 Running B<parallel --citation> one single time takes less than 10
seconds, and will silence the citation notice for future runs. If that seconds, and will silence the citation notice for future runs. This is
is too much trouble for you, why not use one of the alternatives comparable to graphical tools where you have to click a checkbox
instead? See a list in: B<man parallel_alternatives>. saying "Do not show this again". But if that is too much trouble for
you, why not use one of the alternatives instead? See a list in:
B<man parallel_alternatives>.
=head1 Ideas for new design =head1 Ideas for new design

View file

@ -576,7 +576,7 @@ $Global::Initfile && unlink $Global::Initfile;
exit ($err); exit ($err);
sub parse_options { sub parse_options {
$Global::version = 20180922; $Global::version = 20180923;
$Global::progname = 'sql'; $Global::progname = 'sql';
# This must be done first as this may exec myself # This must be done first as this may exec myself

View file

@ -100,8 +100,9 @@ parallel -j3 --timeout 3 --retries 10 --tag ssh_a_to_b ::: $shellsplus :::
# Remove env_parallel from .profile # Remove env_parallel from .profile
ssh nopathbash@lo 'perl -i.bak -pe s/.*env_parallel.*// .profile .bashrc' ssh nopathbash@lo 'perl -i.bak -pe s/.*env_parallel.*// .profile .bashrc'
ssh nopathcsh@lo 'echo >> .cshrc setenv PATH /bin:/usr/bin' ssh nopathcsh@lo 'echo >> .cshrc setenv PATH /bin:/usr/bin'
ssh nopathbash@lo 'echo $PATH' ssh nopathbash@lo 'echo $PATH; echo 1 | parallel echo' || echo Should FAIL
ssh nopathcsh@lo 'echo $PATH' ssh nopathcsh@lo 'echo $PATH; echo 1 | parallel echo' || echo Should FAIL
) )
ssh-copy-id localhost ssh-copy-id localhost
@ -132,3 +133,9 @@ echo
echo Add to /etc/ssh/sshd_config echo Add to /etc/ssh/sshd_config
echo Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc echo Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes256-cbc,aes192-cbc,aes128-cbc,3des-cbc
echo KexAlgorithms diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256@libssh.org,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1 echo KexAlgorithms diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256@libssh.org,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha1
echo
echo If you get:
echo Unable to negotiate with server port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se
echo add this to .ssh/config
echo Ciphers +aes256-cbc

View file

@ -20,7 +20,7 @@ export SMALLDISK
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | parallel rm find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | parallel rm
stdsort() { stdsort() {
"$@" 2>&1 | sort; "$@" 2>&1 | LC_ALL=C sort;
} }
export -f stdsort export -f stdsort
@ -602,13 +602,13 @@ par_retries_replacement_string() {
par_tee() { par_tee() {
export PARALLEL='-k --tee --pipe --tag' export PARALLEL='-k --tee --pipe --tag'
seq 1000000 | parallel 'echo {%};LANG=C wc' ::: {1..5} ::: {a..b} seq 1000000 | parallel 'echo {%};LC_ALL=C wc' ::: {1..5} ::: {a..b}
seq 300000 | parallel 'grep {1} | LANG=C wc {2}' ::: {1..5} ::: -l -c seq 300000 | parallel 'grep {1} | LC_ALL=C wc {2}' ::: {1..5} ::: -l -c
} }
par_tagstring_pipe() { par_tagstring_pipe() {
echo 'bug #50228: --pipe --tagstring broken' echo 'bug #50228: --pipe --tagstring broken'
seq 3000 | parallel -j4 --pipe -N1000 -k --tagstring {%} LANG=C wc seq 3000 | parallel -j4 --pipe -N1000 -k --tagstring {%} LC_ALL=C wc
} }
par_link_files_as_only_arg() { par_link_files_as_only_arg() {
@ -706,12 +706,12 @@ par_halt_one_job() {
par_blocking_redir() { par_blocking_redir() {
( (
echo 'bug #52740: Bash redirection with process substitution blocks' echo 'bug #52740: Bash redirection with process substitution blocks'
echo Test stdout echo Test stdout
echo 3 | parallel seq > >(echo stdout;wc) 2> >(echo stderr >&2; wc >&2) echo 3 | parallel seq > >(echo stdout;wc) 2> >(echo stderr >&2; wc >&2)
echo Test stderr echo Test stderr
echo nOfilE | parallel ls > >(echo stdout;wc) 2> >(echo stderr >&2; wc >&2) echo nOfilE | parallel ls > >(echo stdout;wc) 2> >(echo stderr >&2; wc >&2)
) 2>&1 | sort ) 2>&1 | LC_ALL=C sort
} }
par_pipepart_recend_recstart() { par_pipepart_recend_recstart() {
@ -848,6 +848,12 @@ par_empty_command() {
echo B: $b echo B: $b
} }
par_empty_input_on_stdin() {
echo 'https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=910470'
echo 'This should give no output'
true | stdout parallel --shuf echo
}
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | LC_ALL=C sort |
parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1' parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'

View file

@ -35,12 +35,12 @@ par_exit_code() {
'/tmp/mysleep '$s \ '/tmp/mysleep '$s \
'parallel --halt-on-error now,fail=1 /tmp/mysleep ::: '$s \ 'parallel --halt-on-error now,fail=1 /tmp/mysleep ::: '$s \
'parallel --halt-on-error now,done=1 /tmp/mysleep ::: '$s \ 'parallel --halt-on-error now,done=1 /tmp/mysleep ::: '$s \
'parallel --halt-on-error now,done=1 true ::: '$s \ 'parallel --halt-on-error now,done=1 /bin/true ::: '$s \
'parallel --halt-on-error now,done=1 exit ::: '$s \ 'parallel --halt-on-error now,done=1 exit ::: '$s \
'true;/tmp/mysleep '$s \ 'true;/tmp/mysleep '$s \
'parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: '$s \ 'parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: '$s \
'parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: '$s \ 'parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: '$s \
'parallel --halt-on-error now,done=1 "true;true" ::: '$s \ 'parallel --halt-on-error now,done=1 "true;/bin/true" ::: '$s \
'parallel --halt-on-error now,done=1 "true;exit" ::: '$s 'parallel --halt-on-error now,done=1 "true;exit" ::: '$s
} }
export -f runit export -f runit

View file

@ -4,6 +4,28 @@
# Each should be taking 10-30s and be possible to run in parallel # Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins # I.e.: No race conditions, no logins
par_sem_2jobs() {
echo '### Test semaphore 2 jobs running simultaneously'
parallel --semaphore --id 2jobs -u -j2 'echo job1a 1; sleep 4; echo job1b 3'
sleep 0.5
parallel --semaphore --id 2jobs -u -j2 'echo job2a 2; sleep 4; echo job2b 5'
sleep 0.5
parallel --semaphore --id 2jobs -u -j2 'echo job3a 4; sleep 4; echo job3b 6'
parallel --semaphore --id 2jobs --wait
echo done
}
par_semaphore() {
echo '### Test if parallel invoked as sem will run parallel --semaphore'
sem --id as_sem -u -j2 'echo job1a 1; sleep 3; echo job1b 3'
sleep 0.5
sem --id as_sem -u -j2 'echo job2a 2; sleep 3; echo job2b 5'
sleep 0.5
sem --id as_sem -u -j2 'echo job3a 4; sleep 3; echo job3b 6'
sem --id as_sem --wait
echo done
}
par_line_buffer() { par_line_buffer() {
echo "### --line-buffer" echo "### --line-buffer"
tmp1=$(tempfile) tmp1=$(tempfile)
@ -58,7 +80,7 @@ par__pipe_tee() {
< /dev/zero openssl enc -aes-128-ctr -K 1234 -iv 1234 2>/dev/null | < /dev/zero openssl enc -aes-128-ctr -K 1234 -iv 1234 2>/dev/null |
head -c 1G; head -c 1G;
} }
random1G | parallel --pipe --tee cat ::: {1..3} | LANG=C wc -c random1G | parallel --pipe --tee cat ::: {1..3} | LC_ALL=C wc -c
} }
par__pipepart_tee() { par__pipepart_tee() {
@ -71,7 +93,7 @@ par__pipepart_tee() {
} }
tmp=$(mktemp) tmp=$(mktemp)
random1G >$tmp random1G >$tmp
parallel --pipepart --tee -a $tmp cat ::: {1..3} | LANG=C wc -c parallel --pipepart --tee -a $tmp cat ::: {1..3} | LC_ALL=C wc -c
rm $tmp rm $tmp
} }
@ -126,7 +148,7 @@ _EOF
echo echo
) | perl -ne 's/\r//g;/\S/ and print' | ) | perl -ne 's/\r//g;/\S/ and print' |
# Race will cause the order to change # Race will cause the order to change
sort LC_ALL=C sort
} }
par_k() { par_k() {
@ -148,7 +170,7 @@ par_k_linebuffer() {
par_maxlinelen_m_I() { par_maxlinelen_m_I() {
echo "### Test max line length -m -I" echo "### Test max line length -m -I"
seq 1 60000 | parallel -I :: -km -j1 echo a::b::c | sort >/tmp/114-a$$; seq 1 60000 | parallel -I :: -km -j1 echo a::b::c | LC_ALL=C sort >/tmp/114-a$$;
md5sum </tmp/114-a$$; md5sum </tmp/114-a$$;
export CHAR=$(cat /tmp/114-a$$ | wc -c); export CHAR=$(cat /tmp/114-a$$ | wc -c);
export LINES=$(cat /tmp/114-a$$ | wc -l); export LINES=$(cat /tmp/114-a$$ | wc -l);
@ -159,7 +181,7 @@ par_maxlinelen_m_I() {
par_maxlinelen_X_I() { par_maxlinelen_X_I() {
echo "### Test max line length -X -I" echo "### Test max line length -X -I"
seq 1 60000 | parallel -I :: -kX -j1 echo a::b::c | sort >/tmp/114-b$$; seq 1 60000 | parallel -I :: -kX -j1 echo a::b::c | LC_ALL=C sort >/tmp/114-b$$;
md5sum </tmp/114-b$$; md5sum </tmp/114-b$$;
export CHAR=$(cat /tmp/114-b$$ | wc -c); export CHAR=$(cat /tmp/114-b$$ | wc -c);
export LINES=$(cat /tmp/114-b$$ | wc -l); export LINES=$(cat /tmp/114-b$$ | wc -l);
@ -191,8 +213,11 @@ par_results_csv() {
} }
par_results_compress() { par_results_compress() {
parallel --results /tmp/ged --compress echo ::: 1 | wc -l tmp=$(mktemp)
parallel --results /tmp/ged echo ::: 1 | wc -l rm "$tmp"
parallel --results $tmp --compress echo ::: 1 | wc -l
parallel --results $tmp echo ::: 1 | wc -l
rm -r "$tmp"
} }
par_kill_children_timeout() { par_kill_children_timeout() {
@ -298,15 +323,6 @@ par_plus_dyn_repl() {
parallel --plus echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong" parallel --plus echo '{-2,,A}' ::: "wrong" ::: "$myvar" ::: "wrong"
} }
par_linebuffer_tag_slow_output() {
echo "Test output tag with mixing halflines"
halfline() {
perl -e '$| = 1; map { print $ARGV[0]; sleep(2); print "$_\n" } split //, "Half\n"' $1
}
export -f halfline
parallel --delay 1 -j0 --tag --line-buffer halfline ::: a b
}
par_retries_all_fail() { par_retries_all_fail() {
echo "bug #53748: -k --retries 10 + out of filehandles = blocking" echo "bug #53748: -k --retries 10 + out of filehandles = blocking"
ulimit -n 30 ulimit -n 30
@ -340,5 +356,5 @@ par_long_line_remote() {
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | LC_ALL=C sort |
parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1' parallel --joblog /tmp/jl-`basename $0` -j10 --tag -k '{} 2>&1'

View file

@ -62,66 +62,66 @@ par_result() {
echo "### Test --results" echo "### Test --results"
mkdir -p /tmp/parallel_results_test mkdir -p /tmp/parallel_results_test
parallel -k --results /tmp/parallel_results_test/testA echo {1} {2} ::: I II ::: III IIII parallel -k --results /tmp/parallel_results_test/testA echo {1} {2} ::: I II ::: III IIII
ls /tmp/parallel_results_test/testA/*/*/*/*/* ls /tmp/parallel_results_test/testA/*/*/*/*/* | LC_ALL=C sort
rm -rf /tmp/parallel_results_test/testA* rm -rf /tmp/parallel_results_test/testA*
echo "### Test --res" echo "### Test --res"
mkdir -p /tmp/parallel_results_test mkdir -p /tmp/parallel_results_test
parallel -k --res /tmp/parallel_results_test/testD echo {1} {2} ::: I II ::: III IIII parallel -k --res /tmp/parallel_results_test/testD echo {1} {2} ::: I II ::: III IIII
ls /tmp/parallel_results_test/testD/*/*/*/*/* ls /tmp/parallel_results_test/testD/*/*/*/*/* | LC_ALL=C sort
rm -rf /tmp/parallel_results_test/testD* rm -rf /tmp/parallel_results_test/testD*
echo "### Test --result" echo "### Test --result"
mkdir -p /tmp/parallel_results_test mkdir -p /tmp/parallel_results_test
parallel -k --result /tmp/parallel_results_test/testE echo {1} {2} ::: I II ::: III IIII parallel -k --result /tmp/parallel_results_test/testE echo {1} {2} ::: I II ::: III IIII
ls /tmp/parallel_results_test/testE/*/*/*/*/* ls /tmp/parallel_results_test/testE/*/*/*/*/* | LC_ALL=C sort
rm -rf /tmp/parallel_results_test/testE* rm -rf /tmp/parallel_results_test/testE*
echo "### Test --results --header :" echo "### Test --results --header :"
mkdir -p /tmp/parallel_results_test mkdir -p /tmp/parallel_results_test
parallel -k --header : --results /tmp/parallel_results_test/testB echo {1} {2} ::: a I II ::: b III IIII parallel -k --header : --results /tmp/parallel_results_test/testB echo {1} {2} ::: a I II ::: b III IIII
ls /tmp/parallel_results_test/testB/*/*/*/*/* ls /tmp/parallel_results_test/testB/*/*/*/*/* | LC_ALL=C sort
rm -rf /tmp/parallel_results_test/testB* rm -rf /tmp/parallel_results_test/testB*
echo "### Test --results --header : named - a/b swapped" echo "### Test --results --header : named - a/b swapped"
mkdir -p /tmp/parallel_results_test mkdir -p /tmp/parallel_results_test
parallel -k --header : --results /tmp/parallel_results_test/testC echo {a} {b} ::: b III IIII ::: a I II parallel -k --header : --results /tmp/parallel_results_test/testC echo {a} {b} ::: b III IIII ::: a I II
ls /tmp/parallel_results_test/testC/*/*/*/*/* ls /tmp/parallel_results_test/testC/*/*/*/*/* | LC_ALL=C sort
rm -rf /tmp/parallel_results_test/testC* rm -rf /tmp/parallel_results_test/testC*
echo "### Test --results --header : piped" echo "### Test --results --header : piped"
mkdir -p /tmp/parallel_results_test mkdir -p /tmp/parallel_results_test
(echo Col; perl -e 'print "backslash\\tab\tslash/null\0eof\n"') | parallel --header : --result /tmp/parallel_results_test/testF true (echo Col; perl -e 'print "backslash\\tab\tslash/null\0eof\n"') | parallel --header : --result /tmp/parallel_results_test/testF true
find /tmp/parallel_results_test/testF/*/*/* | sort find /tmp/parallel_results_test/testF/*/*/* | LC_ALL=C sort
rm -rf /tmp/parallel_results_test/testF* rm -rf /tmp/parallel_results_test/testF*
echo "### Test --results --header : piped - non-existing column header" echo "### Test --results --header : piped - non-existing column header"
mkdir -p /tmp/parallel_results_test mkdir -p /tmp/parallel_results_test
(printf "Col1\t\n"; printf "v1\tv2\tv3\n"; perl -e 'print "backslash\\tab\tslash/null\0eof\n"') | (printf "Col1\t\n"; printf "v1\tv2\tv3\n"; perl -e 'print "backslash\\tab\tslash/null\0eof\n"') |
parallel --header : --result /tmp/parallel_results_test/testG true parallel --header : --result /tmp/parallel_results_test/testG true
find /tmp/parallel_results_test/testG/ | sort find /tmp/parallel_results_test/testG/ | LC_ALL=C sort
rm -rf /tmp/parallel_results_test/testG* rm -rf /tmp/parallel_results_test/testG*
} }
par_result_replace() { par_result_replace() {
echo '### bug #49983: --results with {1}' echo '### bug #49983: --results with {1}'
parallel --results /tmp/par_{}_49983 -k echo ::: foo bar baz parallel --results /tmp/par_{}_49983 -k echo ::: foo bar baz
find /tmp/par_*_49983 | sort find /tmp/par_*_49983 | LC_ALL=C sort
rm -rf /tmp/par_*_49983 rm -rf /tmp/par_*_49983
parallel --results /tmp/par_{}_49983 -k echo ::: foo bar baz ::: A B C parallel --results /tmp/par_{}_49983 -k echo ::: foo bar baz ::: A B C
find /tmp/par_*_49983 | sort find /tmp/par_*_49983 | LC_ALL=C sort
rm -rf /tmp/par_*_49983 rm -rf /tmp/par_*_49983
parallel --results /tmp/par_{1}-{2}_49983 -k echo ::: foo bar baz ::: A B C parallel --results /tmp/par_{1}-{2}_49983 -k echo ::: foo bar baz ::: A B C
find /tmp/par_*_49983 | sort find /tmp/par_*_49983 | LC_ALL=C sort
rm -rf /tmp/par_*_49983 rm -rf /tmp/par_*_49983
parallel --results /tmp/par__49983 -k echo ::: foo bar baz ::: A B C parallel --results /tmp/par__49983 -k echo ::: foo bar baz ::: A B C
find /tmp/par_*_49983 | sort find /tmp/par_*_49983 | LC_ALL=C sort
rm -rf /tmp/par_*_49983 rm -rf /tmp/par_*_49983
parallel --results /tmp/par__49983 --header : -k echo ::: foo bar baz ::: A B C parallel --results /tmp/par__49983 --header : -k echo ::: foo bar baz ::: A B C
find /tmp/par_*_49983 | sort find /tmp/par_*_49983 | LC_ALL=C sort
rm -rf /tmp/par_*_49983 rm -rf /tmp/par_*_49983
parallel --results /tmp/par__49983-{}/ --header : -k echo ::: foo bar baz ::: A B C parallel --results /tmp/par__49983-{}/ --header : -k echo ::: foo bar baz ::: A B C
find /tmp/par_*_49983-* | sort find /tmp/par_*_49983-* | LC_ALL=C sort
rm -rf /tmp/par_*_49983-* rm -rf /tmp/par_*_49983-*
} }
@ -258,7 +258,11 @@ par_pipe_compress_blocks() {
seq 3 | parallel -k -j2 --compress -N1 -L1 --pipe cat seq 3 | parallel -k -j2 --compress -N1 -L1 --pipe cat
} }
par_too_long_line_X() {
echo 'bug #54869: Long lines break'
seq 3000 | parallel -Xj1 'echo {} {} {} {} {} {} {} {} {} {} {} {} {} {} | wc'
}
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | LC_ALL=C sort |
parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1' parallel -j6 --tag -k --joblog +/tmp/jl-`basename $0` '{} 2>&1'

View file

@ -10,7 +10,7 @@ par_sigterm() {
A=$! A=$!
sleep 29; kill -TERM $A sleep 29; kill -TERM $A
wait wait
sort /tmp/parallel$$ LC_ALL=C sort /tmp/parallel$$
rm /tmp/parallel$$ rm /tmp/parallel$$
} }

View file

@ -186,28 +186,6 @@ newlines"' ::: a b c d e | sort
) | perl -pe 's/\0/<null>/g;s/\d+/./g' ) | perl -pe 's/\0/<null>/g;s/\d+/./g'
} }
par_parcat_mixing() {
echo 'parcat output should mix: a b a b'
mktmpfifo() {
tmp=$(tempfile)
rm $tmp
mkfifo $tmp
echo $tmp
}
slow_output() {
string=$1
perl -e 'print "'$string'"x9000,"start\n"'
sleep 6
perl -e 'print "'$string'"x9000,"end\n"'
}
tmp1=$(mktmpfifo)
tmp2=$(mktmpfifo)
slow_output a > $tmp1 &
sleep 3
slow_output b > $tmp2 &
parcat $tmp1 $tmp2 | tr -s ab
}
par_delay_human_readable() { par_delay_human_readable() {
# Test that you can use d h m s in --delay # Test that you can use d h m s in --delay
parallel --delay 0.1s echo ::: a b c parallel --delay 0.1s echo ::: a b c
@ -269,4 +247,4 @@ par_nice() {
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | parallel -j6 --tag -k '{} 2>&1' compgen -A function | grep par_ | LC_ALL=C sort | parallel -j6 --tag -k '{} 2>&1'

View file

@ -29,6 +29,28 @@
echo 1=OK $?' | grep -v '\[1\]' | grep -v 'SHA256' echo 1=OK $?' | grep -v '\[1\]' | grep -v 'SHA256'
#} #}
par_parcat_mixing() {
echo 'parcat output should mix: a b a b'
mktmpfifo() {
tmp=$(tempfile)
rm $tmp
mkfifo $tmp
echo $tmp
}
slow_output() {
string=$1
perl -e 'print "'$string'"x9000,"start\n"'
sleep 2
perl -e 'print "'$string'"x9000,"end\n"'
}
tmp1=$(mktmpfifo)
tmp2=$(mktmpfifo)
slow_output a > $tmp1 &
sleep 1
slow_output b > $tmp2 &
parcat $tmp1 $tmp2 | tr -s ab
}
par_testhalt() { par_testhalt() {
testhalt_false() { testhalt_false() {
echo '### testhalt --halt '$1; echo '### testhalt --halt '$1;
@ -94,6 +116,14 @@ par_tmux_termination() {
stdout parallel --timeout 120 doit ::: 1 stdout parallel --timeout 120 doit ::: 1
} }
par_linebuffer_tag_slow_output() {
echo "Test output tag with mixing halflines"
halfline() {
perl -e '$| = 1; map { print $ARGV[0]; sleep(1); print "$_\n" } split //, "Half\n"' $1
}
export -f halfline
parallel --delay 0.5 -j0 --tag --line-buffer halfline ::: a b
}
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | sort |

View file

@ -147,6 +147,6 @@ par_no_table() {
export -f $(compgen -A function | egrep 'p_|par_') export -f $(compgen -A function | egrep 'p_|par_')
# Tested that -j0 in parallel is fastest (up to 15 jobs) # Tested that -j0 in parallel is fastest (up to 15 jobs)
# more than 3 jobs: sqlite locks # more than 3 jobs: sqlite locks
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | LC_ALL=C sort |
stdout parallel --timeout 200 -vj3 -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \ stdout parallel --timeout 200 -vj3 -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \
:::: - ::: \$MYSQL \$PG \$SQLITE :::: - ::: \$MYSQL \$PG \$SQLITE

View file

@ -114,8 +114,8 @@ echo '### Test --trc "/tmp/./--- /A" "/tmp/./ ---/B"'
touch -- '/tmp/./--- /A' '/tmp/ ---/B'; touch -- '/tmp/./--- /A' '/tmp/ ---/B';
rm -f ./---?/A.a ./?---/B.a; rm -f ./---?/A.a ./?---/B.a;
parallel --trc {=s:.*/./::=}.a -S csh@lo,sh@lo touch ./{=s:.*/./::=}.a ::: '/tmp/./--- /A' '/tmp/./ ---/B'; parallel --trc {=s:.*/./::=}.a -S csh@lo,sh@lo touch ./{=s:.*/./::=}.a ::: '/tmp/./--- /A' '/tmp/./ ---/B';
ls ./---?/A.a ./?---/B.a; ls ./---?/A.a ./?---/B.a | LC_ALL=C sort;
parallel --nonall -k -S csh@lo,sh@lo 'ls ./?--- ./---? || echo OK'; parallel --nonall -k -S csh@lo,sh@lo 'ls ./?--- ./---? || echo OK' | LC_ALL=C sort;
echo '### bug #46519: --onall ignores --transfer' echo '### bug #46519: --onall ignores --transfer'
touch bug46519.{a,b,c}; rm -f bug46519.?? bug46519.???; touch bug46519.{a,b,c}; rm -f bug46519.?? bug46519.???;

View file

@ -178,7 +178,7 @@ par_csh_man() {
_EOF _EOF
) )
# Sometimes the order f*cks up # Sometimes the order f*cks up
stdout ssh csh@lo "$myscript" | sort stdout ssh csh@lo "$myscript" | LC_ALL=C sort
} }
par_dash_man() { par_dash_man() {
@ -243,6 +243,7 @@ par_fish_man() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
echo "### From man env_parallel" echo "### From man env_parallel"
env_parallel --session
alias myecho='echo aliases with \= \& \" \!'" \'" alias myecho='echo aliases with \= \& \" \!'" \'"
myecho work myecho work
env_parallel myecho ::: work env_parallel myecho ::: work
@ -545,8 +546,12 @@ par_zsh_man() {
alias multiline='echo multiline alias multiline='echo multiline
echo aliases with \= \& \" \!'" \'" echo aliases with \= \& \" \!'" \'"
# eval is needed make aliases work
eval multiline work eval multiline work
# Zsh-5.4.2 requires additional quoting when multiline
# Looks like a bug
alias multiline='echo multiline
echo aliases with \\= \\& \\" \\!'" \\\'"
# eval is needed make aliases work
env_parallel multiline ::: work env_parallel multiline ::: work
env_parallel -S server multiline ::: work env_parallel -S server multiline ::: work
env_parallel --env multiline multiline ::: work env_parallel --env multiline multiline ::: work
@ -792,7 +797,8 @@ par_fish_underscore() {
end end
set not_copied_var "BAD"; set not_copied_var "BAD";
set not_copied_array BAD BAD BAD; set not_copied_array BAD BAD BAD;
env_parallel --record-env; # env_parallel --record-env;
env_parallel --session;
alias myecho="echo \$myvar aliases"; alias myecho="echo \$myvar aliases";
function myfunc function myfunc
myecho $myarray functions $argv myecho $myarray functions $argv
@ -1103,7 +1109,7 @@ par_ash_funky() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh ash@lo "$myscript" 2>&1 | sort ssh ash@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_bash_funky() { par_bash_funky() {
@ -1136,7 +1142,7 @@ par_bash_funky() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh bash@lo "$myscript" 2>&1 | sort ssh bash@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_csh_funky() { par_csh_funky() {
@ -1201,11 +1207,12 @@ par_dash_funky() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh dash@lo "$myscript" 2>&1 | sort ssh dash@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_fish_funky() { par_fish_funky() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
env_parallel --session
set myvar "myvar works" set myvar "myvar works"
setenv myenvvar "myenvvar works" setenv myenvvar "myenvvar works"
@ -1277,7 +1284,7 @@ par_ksh_funky() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh ksh@lo "$myscript" 2>&1 | sort ssh ksh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_mksh_funky() { par_mksh_funky() {
@ -1310,7 +1317,7 @@ par_mksh_funky() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh mksh@lo "$myscript" 2>&1 | sort ssh mksh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_sh_funky() { par_sh_funky() {
@ -1343,13 +1350,13 @@ par_sh_funky() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh sh@lo "$myscript" 2>&1 | sort ssh sh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_tcsh_funky() { par_tcsh_funky() {
myscript=$(cat <<'_EOF' myscript=$(cat <<'_EOF'
# funky breaks with different LANG # funky breaks with different LC_ALL
setenv LANG C setenv LC_ALL C
set myvar = "myvar works" set myvar = "myvar works"
set funky = "`perl -e 'print pack q(c*), 2..255'`" set funky = "`perl -e 'print pack q(c*), 2..255'`"
set myarray = ('' 'array_val2' '3' '' '5' ' space 6 ') set myarray = ('' 'array_val2' '3' '' '5' ' space 6 ')
@ -1378,7 +1385,7 @@ par_tcsh_funky() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh tcsh@lo "$myscript" 2>&1 | sort ssh tcsh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_zsh_funky() { par_zsh_funky() {
@ -1387,7 +1394,8 @@ par_zsh_funky() {
. `which env_parallel.zsh`; . `which env_parallel.zsh`;
myvar="myvar works" myvar="myvar works"
funky=$(perl -e "print pack \"c*\", 1..255") # Zsh-5.4.2 fails for ascii 167
funky=$(perl -e "print pack \"c*\", 1..166,168..255")
myarray=("" array_val2 3 "" 5 " space 6 ") myarray=("" array_val2 3 "" 5 " space 6 ")
declare -A assocarr declare -A assocarr
assocarr[a]=assoc_val_a assocarr[a]=assoc_val_a
@ -1409,7 +1417,7 @@ par_zsh_funky() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh zsh@lo "$myscript" 2>&1 | sort ssh zsh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_ash_env_parallel() { par_ash_env_parallel() {
@ -1434,7 +1442,7 @@ par_ash_env_parallel() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh ash@lo "$myscript" 2>&1 | sort ssh ash@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_bash_env_parallel() { par_bash_env_parallel() {
@ -1459,7 +1467,7 @@ par_bash_env_parallel() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh bash@lo "$myscript" 2>&1 | sort ssh bash@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_csh_env_parallel() { par_csh_env_parallel() {
@ -1496,7 +1504,7 @@ par_dash_env_parallel() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh dash@lo "$myscript" 2>&1 | sort ssh dash@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_fish_env_parallel() { par_fish_env_parallel() {
@ -1534,7 +1542,7 @@ par_ksh_env_parallel() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh ksh@lo "$myscript" 2>&1 | sort ssh ksh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_mksh_env_parallel() { par_mksh_env_parallel() {
@ -1559,7 +1567,7 @@ par_mksh_env_parallel() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh mksh@lo "$myscript" 2>&1 | sort ssh mksh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_sh_env_parallel() { par_sh_env_parallel() {
@ -1584,7 +1592,7 @@ par_sh_env_parallel() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh sh@lo "$myscript" 2>&1 | sort ssh sh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_tcsh_env_parallel() { par_tcsh_env_parallel() {
@ -1597,7 +1605,7 @@ par_tcsh_env_parallel() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh tcsh@lo "$myscript" 2>&1 | sort ssh tcsh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_zsh_env_parallel() { par_zsh_env_parallel() {
@ -1621,7 +1629,7 @@ par_zsh_env_parallel() {
_EOF _EOF
) )
# Order is often different. Dunno why. So sort # Order is often different. Dunno why. So sort
ssh zsh@lo "$myscript" 2>&1 | sort ssh zsh@lo "$myscript" 2>&1 | LC_ALL=C sort
} }
par_ash_environment_too_big() { par_ash_environment_too_big() {
@ -2595,7 +2603,7 @@ par_bash_parset() {
echo "${arr1[0]} ${arr1[1]} ${arr1[2]}" echo "${arr1[0]} ${arr1[1]} ${arr1[2]}"
env_parset comma3,comma2,comma1 myfun ::: baz bar foo env_parset comma3,comma2,comma1 myfun ::: baz bar foo
echo "$comma1 $comma2 $comma3" echo "$comma1 $comma2 $comma3"
env_parset 'space3 space2 space1' myfum ::: baz bar foo env_parset 'space3 space2 space1' myfun ::: baz bar foo
echo "$space1 $space2 $space3" echo "$space1 $space2 $space3"
env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1 env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1
echo "$newline1" echo "$newline1"
@ -2724,7 +2732,7 @@ par_ksh_parset() {
echo "${arr1[0]} ${arr1[1]} ${arr1[2]}" echo "${arr1[0]} ${arr1[1]} ${arr1[2]}"
env_parset comma3,comma2,comma1 myfun ::: baz bar foo env_parset comma3,comma2,comma1 myfun ::: baz bar foo
echo "$comma1 $comma2 $comma3" echo "$comma1 $comma2 $comma3"
env_parset 'space3 space2 space1' myfum ::: baz bar foo env_parset 'space3 space2 space1' myfun ::: baz bar foo
echo "$space1 $space2 $space3" echo "$space1 $space2 $space3"
env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1 env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1
echo "$newline1" echo "$newline1"
@ -2771,6 +2779,8 @@ par_mksh_parset() {
echo ${myarray[4]} ${myarray[5]} ${myarray[6]} echo ${myarray[4]} ${myarray[5]} ${myarray[6]}
echo '### env_parset' echo '### env_parset'
# bug in mksh: Alias must be set before
alias myecho='echo myecho "$myvar" "${myarr[1]}"'
myfun() { myfun() {
myecho myfun "$@"; myecho myfun "$@";
} }
@ -2782,7 +2792,7 @@ par_mksh_parset() {
echo "${arr1[0]} ${arr1[1]} ${arr1[2]}" echo "${arr1[0]} ${arr1[1]} ${arr1[2]}"
env_parset comma3,comma2,comma1 myfun ::: baz bar foo env_parset comma3,comma2,comma1 myfun ::: baz bar foo
echo "$comma1 $comma2 $comma3" echo "$comma1 $comma2 $comma3"
env_parset 'space3 space2 space1' myfum ::: baz bar foo env_parset 'space3 space2 space1' myfun ::: baz bar foo
echo "$space1 $space2 $space3" echo "$space1 $space2 $space3"
env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1 env_parset 'newline3 newline2 newline1' 'echo "$mynewline";seq' ::: 3 2 1
echo "$newline1" echo "$newline1"
@ -3256,11 +3266,14 @@ _EOF
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
# --retries 2 due to ssh_exchange_identification: read: Connection reset by peer
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
#compgen -A function | grep par_ | sort | #compgen -A function | grep par_ | sort |
compgen -A function | grep par_ | sort -r | compgen -A function | grep par_ | LC_ALL=C sort -r |
# parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1' # parallel --joblog /tmp/jl-`basename $0` --delay $D -j$P --tag -k '{} 2>&1'
parallel --joblog /tmp/jl-`basename $0` -j200% --tag -k '{} 2>&1' | parallel --joblog /tmp/jl-`basename $0` -j200% --retries 2 --tag -k '{} 2>&1' |
perl -pe 's/line \d\d\d:/line XXX:/; perl -pe 's/line \d\d\d:/line XXX:/;
s/\d+ >= \d+/XXX >= XXX/; s/\d+ >= \d+/XXX >= XXX/;
s/sh:? \d?\d\d:/sh: XXX:/; s/sh:? \d?\d\d:/sh: XXX:/;

View file

@ -7,7 +7,8 @@ par_path_remote_bash() {
rm -rf /tmp/parallel rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp cp /usr/local/bin/parallel /tmp
cat <<'_EOS' | stdout ssh nopathbash@lo -T | grep -Ev 'For upgrade information, please visit:|updates are security updates|packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://|from 13 to 17 years|mentor:|New release|do-release-upgrade|public clouds|\s*^$' | uniq cat <<'_EOS' | stdout ssh nopathbash@lo -T | perl -ne '/logged in/..0 and print' | uniq
echo logged in
echo BASH Path before: $PATH with no parallel echo BASH Path before: $PATH with no parallel
parallel echo ::: 1 parallel echo ::: 1
# Race condition stderr/stdout # Race condition stderr/stdout
@ -28,7 +29,8 @@ par_path_remote_csh() {
rm -rf /tmp/parallel rm -rf /tmp/parallel
cp /usr/local/bin/parallel /tmp cp /usr/local/bin/parallel /tmp
cat <<'_EOS' | stdout ssh nopathcsh@lo -T | grep -Ev 'For upgrade information, please visit:|updates are security updates|packages can be updated|System restart required|Welcome to|https://|Ubuntu|http://|from 13 to 17 years|mentor:|New release|do-release-upgrade|public clouds|\s*^$' | uniq cat <<'_EOS' | stdout ssh nopathcsh@lo -T | perl -ne '/logged in/..0 and print' | uniq
echo logged in
echo CSH Path before: $PATH with no parallel echo CSH Path before: $PATH with no parallel
which parallel >& /dev/stdout which parallel >& /dev/stdout
echo '^^^^^^^^ Not found is OK' echo '^^^^^^^^ Not found is OK'
@ -155,6 +157,6 @@ par_retries_bug_from_2010() {
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)
#compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1' #compgen -A function | grep par_ | sort | parallel --delay $D -j$P --tag -k '{} 2>&1'
compgen -A function | grep par_ | sort | compgen -A function | grep par_ | LC_ALL=C sort |
parallel --joblog /tmp/jl-`basename $0` --delay 0.1 -j10 --tag -k '{} 2>&1' | parallel --joblog /tmp/jl-`basename $0` --delay 0.1 -j10 --tag -k '{} 2>&1' |
grep -Ev 'microk8s|smart connected IoT' grep -Ev 'microk8s|smart connected IoT'

View file

@ -147,9 +147,9 @@ par_propagate_env() {
par_env_parallel_big_env() { par_env_parallel_big_env() {
echo '### bug #54128: command too long when exporting big env' echo '### bug #54128: command too long when exporting big env'
. `which env_parallel.bash` . `which env_parallel.bash`
a=`rand | head -c 75000` a=`rand | perl -pe 's/\0//g'| head -c 75000`
env_parallel -Slo echo should not ::: fail 2>&1 env_parallel -Slo echo should not ::: fail 2>&1
a=`rand | head -c 76000` a=`rand | perl -pe 's/\0//g'| head -c 80000`
env_parallel -Slo echo should ::: fail 2>/dev/null || echo OK env_parallel -Slo echo should ::: fail 2>/dev/null || echo OK
} }

View file

@ -9,7 +9,7 @@ PARALLEL=-j8
export PARALLEL export PARALLEL
stdsort() { stdsort() {
"$@" 2>&1 | sort; "$@" 2>&1 | LC_ALL=C sort;
} }
export -f stdsort export -f stdsort

View file

@ -8,22 +8,22 @@ cd $TMP/
echo echo test of cat pipe sh | parallel -j 50 2>&1 echo echo test of cat pipe sh | parallel -j 50 2>&1
find . -name '*.jpg' | parallel -j +0 convert -geometry 120 {} {//}/thumb_{/} find . -name '*.jpg' | parallel -j +0 convert -geometry 120 {} {//}/thumb_{/}
ls | parallel ls | sort ls | parallel ls | LC_ALL=C sort
ls | parallel echo ls | sort ls | parallel echo ls | LC_ALL=C sort
ls | parallel -j 1 echo ls | sort ls | parallel -j 1 echo ls | LC_ALL=C sort
find -type f | parallel diff {} a/foo ">"{}.diff | sort find -type f | parallel diff {} a/foo ">"{}.diff | LC_ALL=C sort
ls | parallel -v --group "ls {}|wc;echo {}" | sort ls | parallel -v --group "ls {}|wc;echo {}" | LC_ALL=C sort
echo '### Check that we can have more input than max procs (-j 0) - touch' echo '### Check that we can have more input than max procs (-j 0) - touch'
perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | parallel -vj 0 touch | sort | tail perl -e 'print map {"more_than_5000-$_\n" } (4000..9999)' | parallel -vj 0 touch | LC_ALL=C sort | tail
echo '### rm' echo '### rm'
perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | parallel -j 0 rm | sort perl -e 'print map {"more_than_5000-$_\n" } (4000..9900)' | parallel -j 0 rm | LC_ALL=C sort
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 | egrep -v 'parallel: Warning: Starting|parallel: Warning: Consider' cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 -k --joblog /tmp/jl-`basename $0` -L1 | egrep -v 'parallel: Warning: Starting|parallel: Warning: Consider'
ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | LC_ALL=C sort
ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | LC_ALL=C sort
find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | LC_ALL=C sort
find . -type f | parallel -v --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort find . -type f | parallel -v --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | LC_ALL=C sort
find . -type f | parallel -q --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort find . -type f | parallel -q --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | LC_ALL=C sort
find . -type f | parallel -qv --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort find . -type f | parallel -qv --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | LC_ALL=C sort
EOF EOF
cd - >/dev/null cd - >/dev/null

View file

@ -50,7 +50,7 @@ echo "bug #37956: --colsep does not default to '\t' as specified in the man page
printf "A\tB\n1\tone" | parallel --header : echo {B} {A} printf "A\tB\n1\tone" | parallel --header : echo {B} {A}
echo '### Test --tollef' echo '### Test --tollef'
stdout parallel -k --tollef echo -- 1 2 3 ::: a b c | sort stdout parallel -k --tollef echo -- 1 2 3 ::: a b c | LC_ALL=C sort
echo '### Test --tollef --gnu' echo '### Test --tollef --gnu'
stdout parallel -k --tollef --gnu echo ::: 1 2 3 -- a b c stdout parallel -k --tollef --gnu echo ::: 1 2 3 -- a b c

View file

@ -52,9 +52,9 @@ test_chr_on_sshlogin() {
stdout parallel -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// LANG=C parallel -k -j1 $onall -S $sshlogin --env V,V2,LANG echo \''"{}$V$V2"'\' ::: {#} {#} {#} {#} | stdout parallel -j4 -k -I // --arg-sep _ -0 V=// V2=V2=// LANG=C parallel -k -j1 $onall -S $sshlogin --env V,V2,LANG echo \''"{}$V$V2"'\' ::: {#} {#} {#} {#} |
sort | sort |
uniq -c | uniq -c |
grep -v ' 4 '| grep -av ' 4 '|
grep -v xauth | grep -av xauth |
grep -v X11 grep -av X11
} }
export -f test_chr_on_sshlogin export -f test_chr_on_sshlogin
@ -87,7 +87,7 @@ par_env_160() {
par_env_160_onall() { par_env_160_onall() {
echo '### Test --env for \160 - which kills csh - single and double --onall - no output is good' echo '### Test --env for \160 - which kills csh - single and double --onall - no output is good'
test_chr_on_sshlogin 160 :,1/lo,1/tcsh@lo --onall | test_chr_on_sshlogin 160 :,1/lo,1/tcsh@lo --onall |
grep -v ' 3 ' grep -a -v ' 3 '
} }
export -f $(compgen -A function | grep par_) export -f $(compgen -A function | grep par_)

View file

@ -290,4 +290,4 @@ export -f $(compgen -A function | grep par_)
# Tested with -j1..8 # Tested with -j1..8
# -j6 was fastest # -j6 was fastest
#compgen -A function | grep par_ | sort | parallel -j$P --tag -k '{} 2>&1' #compgen -A function | grep par_ | sort | parallel -j$P --tag -k '{} 2>&1'
compgen -A function | grep par_ | sort | parallel -j6 --tag -k '{} 2>&1' compgen -A function | grep par_ | LC_ALL=C sort | parallel -j6 --tag -k '{} 2>&1'

View file

@ -28,7 +28,7 @@ echo '### This causes problems if we kill child processes';
echo '### This causes problems if we kill child processes (II)'; echo '### This causes problems if we kill child processes (II)';
# 2>/dev/null to avoid parallel: Warning: Starting 45 processes took > 2 sec. # 2>/dev/null to avoid parallel: Warning: Starting 45 processes took > 2 sec.
seq 1 40 | parallel -j 0 seq 1 10 '| parallel -j 3 echo' 2>/dev/null | sort | md5sum seq 1 40 | parallel -j 0 seq 1 10 '| parallel -j 3 echo' 2>/dev/null | LC_ALL=C sort | md5sum
echo '### Test -m'; echo '### Test -m';
(echo foo;echo bar) | parallel -j1 -m echo 1{}2{}3 A{}B{}C (echo foo;echo bar) | parallel -j1 -m echo 1{}2{}3 A{}B{}C

View file

@ -1,5 +1,23 @@
#!/bin/bash #!/bin/bash
get_tmux() {
# To install tmux in different version run this
cd /tmp
doit() {
wget https://github.com/tmux/tmux/archive/$1.tar.gz
tar xvf $1.tar.gz
cd tmux-$1
./autogen.sh
./configure --prefix /tmp/tmux/$1
make
make install
sudo cp /tmp/tmux/$1/bin/tmux /usr/local/bin/tmux-$1
}
. `which env_parallel.bash`
seq 1.8 0.1 2.9 | env_parallel --tag --lb doit
}
par_tmux_filter() { par_tmux_filter() {
# /tmp/parallel-local7/tmsOU2Ig # /tmp/parallel-local7/tmsOU2Ig
perl -pe 's:(/tmp\S+/tms).....:$1XXXXX:;s/ p\d+/pID/;' perl -pe 's:(/tmp\S+/tms).....:$1XXXXX:;s/ p\d+/pID/;'

View file

@ -21,7 +21,7 @@ MASTER=$(parallel -j0 --delay 0.1 --halt now,success=1 $PARALLEL_SSH {} echo {}
::: {ubuntu,suse,debian}.polarhome.com) ::: {ubuntu,suse,debian}.polarhome.com)
parallel -j0 --delay 0.1 --retries $RETRIES \ parallel -j0 --delay 0.1 --retries $RETRIES \
rsync -a /usr/local/bin/{parallel,env_parallel,env_parallel.*[^~],parcat} \ rsync -L /usr/local/bin/{parallel,env_parallel,env_parallel.*[^~],parcat,stdout} \
::: $MASTER:bin/ ::: $MASTER:bin/
doit() { doit() {
@ -32,7 +32,8 @@ doit() {
export RETRIES export RETRIES
export MAXPROC export MAXPROC
export RET_TIME_K="-k --retries $RETRIES --timeout $MAXTIME" export RET_TIME_K="-k --retries $RETRIES --timeout $MAXTIME"
LC_ALL=C
echo MAXTIME=$MAXTIME RETRIES=$RETRIES MAXPROC=$MAXPROC MAXINNERPROC=$MAXINNERPROC echo MAXTIME=$MAXTIME RETRIES=$RETRIES MAXPROC=$MAXPROC MAXINNERPROC=$MAXINNERPROC
echo '### Filter out working servers' echo '### Filter out working servers'
@ -42,7 +43,6 @@ doit() {
POLAR="`bin/parallel -j0 -k --timeout 10 $PARALLEL_SSH {} echo {} ::: $P`" POLAR="`bin/parallel -j0 -k --timeout 10 $PARALLEL_SSH {} echo {} ::: $P`"
diff <(echo "$POLAR_ALL") <(echo "$POLAR") diff <(echo "$POLAR_ALL") <(echo "$POLAR")
S_POLAR=`bin/parallel -j0 $RET_TIME_K echo -S 1/{} ::: $POLAR` S_POLAR=`bin/parallel -j0 $RET_TIME_K echo -S 1/{} ::: $POLAR`
#" -S '1/sshminix minix'"
sshwithpass() { sshwithpass() {
# Minix requires sshpass. The other servers will use ssh-keys # Minix requires sshpass. The other servers will use ssh-keys
@ -61,8 +61,13 @@ doit() {
export -f copy export -f copy
par_nonall() { par_nonall() {
sshwithpass() {
# Minix requires sshpass. The other servers will use ssh-keys
sshpass -f ~/.ssh/minix.password ssh -oLogLevel=quiet "$@"
}
export -f sshwithpass
parallel -j$MAXPROC $RET_TIME_K --delay 0.1 --tag \ parallel -j$MAXPROC $RET_TIME_K --delay 0.1 --tag \
--nonall $S_POLAR -S "1/sshminix minix" --argsep ,:- \ --nonall $S_POLAR -S "1/sshwithpass minix" --argsep ,:- \
'source setupenv >&/dev/null || . `pwd`/setupenv;' "$@" 'source setupenv >&/dev/null || . `pwd`/setupenv;' "$@"
} }
export -f par_nonall export -f par_nonall

View file

@ -80,6 +80,7 @@ perl -ne '$/="\n\n"; /^Output/../^[^O]\S/ and next; /^ / and print;' ../../src/
s/cat: input_file: No such file or directory\n//; s/cat: input_file: No such file or directory\n//;
s{rsync: link_stat ".*/home/parallel/input_file.out" .*\n}{}; s{rsync: link_stat ".*/home/parallel/input_file.out" .*\n}{};
s{rsync error: some files/attrs were not transferred .*\n}{}; s{rsync error: some files/attrs were not transferred .*\n}{};
s{.* GtkDialog .*\n}{};
' | ' |
uniq uniq
# 3+3 .par files (from --files), 1 .tms-file from tmux attach # 3+3 .par files (from --files), 1 .tms-file from tmux attach

View file

@ -8,24 +8,6 @@ echo '### Test mutex. This should not mix output';
parallel --semaphore --id mutex --wait; parallel --semaphore --id mutex --wait;
echo done echo done
echo '### Test semaphore 2 jobs running simultaneously'
parallel --semaphore --id 2jobs -u -j2 'echo job1a 1; sleep 1; echo job1b 3';
sleep 0.2;
parallel --semaphore --id 2jobs -u -j2 'echo job2a 2; sleep 1; echo job2b 5';
sleep 0.2;
parallel --semaphore --id 2jobs -u -j2 'echo job3a 4; sleep 1; echo job3b 6';
parallel --semaphore --id 2jobs --wait;
echo done
echo '### Test if parallel invoked as sem will run parallel --semaphore'
sem --id as_sem -u -j2 'echo job1a 1; sleep 1; echo job1b 3';
sleep 0.2;
sem --id as_sem -u -j2 'echo job2a 2; sleep 1; echo job2b 5';
sleep 0.2;
sem --id as_sem -u -j2 'echo job3a 4; sleep 1; echo job3b 6';
sem --id as_sem --wait;
echo done
echo '### Test similar example as from man page - run 2 jobs simultaneously' echo '### Test similar example as from man page - run 2 jobs simultaneously'
echo 'Expect done: 1 2 5 3 4' echo 'Expect done: 1 2 5 3 4'
for i in 5 1 2 3 4 ; do for i in 5 1 2 3 4 ; do

View file

@ -92,7 +92,7 @@ par_newline_on_commandline() {
par_showtables() { par_showtables() {
echo "### Test --show-tables" echo "### Test --show-tables"
sql --show-tables :oraunittest | sort sql --show-tables :oraunittest | LC_ALL=C sort
} }
par_showdatabases() { par_showdatabases() {

View file

@ -8,7 +8,7 @@ SSHLOGIN2=parallel@$SERVER2
export PARALLEL=-j0 export PARALLEL=-j0
#export PARALLEL="--sshdelay 0.3" #export PARALLEL="--sshdelay 0.3"
# Make sure sort order is the same # Make sure sort order is the same
export LANG=C export LC_ALL=C
echo '### Test --transfer --return --cleanup' echo '### Test --transfer --return --cleanup'

View file

@ -27,7 +27,7 @@ seq 1 13 | parallel echo {} '>' parallel_{}.test
ls parallel_*.test | parallel -j+0 --trc {.}.out --bf my_script \ ls parallel_*.test | parallel -j+0 --trc {.}.out --bf my_script \
-S $SSHLOGIN1,$SSHLOGIN2,: "./my_script {} > {.}.out" -S $SSHLOGIN1,$SSHLOGIN2,: "./my_script {} > {.}.out"
cat parallel_*.test parallel_*.out ls parallel_*.test parallel_*.out | LC_ALL=C sort | xargs cat
## Broken since 2013-03-23 ## Broken since 2013-03-23
## rm -rf tmp ## rm -rf tmp

View file

@ -10,34 +10,34 @@ echo $SERVER2 >~/.parallel/sshloginfile
echo '### Test --wd newtempdir/newdir/tmp/ with space dirs'; echo '### Test --wd newtempdir/newdir/tmp/ with space dirs';
ssh $SERVER2 rm -rf newtempdir; ssh $SERVER2 rm -rf newtempdir;
stdout parallel -j9 -k --wd newtempdir/newdir/tmp/ --basefile 1-col.txt --trc {}.6 -S .. -v echo ">"{}.6 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg'; stdout parallel -j9 -k --wd newtempdir/newdir/tmp/ --basefile 1-col.txt --trc {}.6 -S .. -v echo ">"{}.6 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg';
find . -name '*.6' | sort find . -name '*.6' | LC_ALL=C sort
echo '### Test --wd /tmp/newtempdir/newdir/tmp/ with space dirs'; echo '### Test --wd /tmp/newtempdir/newdir/tmp/ with space dirs';
ssh $SERVER2 rm -rf /tmp/newtempdir; ssh $SERVER2 rm -rf /tmp/newtempdir;
stdout parallel -j9 -k --wd /tmp/newtempdir/newdir/tmp/ --basefile 1-col.txt --trc {}.7 -S .. -v echo ">"{}.7 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg'; stdout parallel -j9 -k --wd /tmp/newtempdir/newdir/tmp/ --basefile 1-col.txt --trc {}.7 -S .. -v echo ">"{}.7 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg';
find . -name '*.7' | sort find . -name '*.7' | LC_ALL=C sort
echo '### Test --workdir ...' echo '### Test --workdir ...'
parallel -j9 -k --workdir ... --trc {}.1 -S .. echo ">"{}.1 ::: 2-col.txt parallel -j9 -k --workdir ... --trc {}.1 -S .. echo ">"{}.1 ::: 2-col.txt
find . -name '*.1' | sort find . -name '*.1' | LC_ALL=C sort
echo '### Test --wd ...' echo '### Test --wd ...'
parallel -k --wd ... --trc {}.2 -S .. -v echo ">"{}.2 ::: 2-col.txt parallel -k --wd ... --trc {}.2 -S .. -v echo ">"{}.2 ::: 2-col.txt
find . -name '*.2' | sort find . -name '*.2' | LC_ALL=C sort
echo '### Test --wd ... with space dirs' echo '### Test --wd ... with space dirs'
stdout parallel -j9 -k --wd ... --trc {}.3 -S .. -v echo ">"{}.3 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg' stdout parallel -j9 -k --wd ... --trc {}.3 -S .. -v echo ">"{}.3 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg'
# A few rmdir errors are OK as we have multiple files in the same dirs # A few rmdir errors are OK as we have multiple files in the same dirs
find . -name '*.3' | sort find . -name '*.3' | LC_ALL=C sort
echo '### Test --wd tmpdir' echo '### Test --wd tmpdir'
parallel -j9 -k --wd tmpdir --basefile 1-col.txt --trc {}.4 -S .. -v echo ">"{}.4 ::: 2-col.txt parallel -j9 -k --wd tmpdir --basefile 1-col.txt --trc {}.4 -S .. -v echo ">"{}.4 ::: 2-col.txt
find . -name '*.4' | sort find . -name '*.4' | LC_ALL=C sort
echo '### Test --wd /tmp/ with space dirs' echo '### Test --wd /tmp/ with space dirs'
stdout parallel -k -j9 --wd /tmp/ --basefile 1-col.txt --trc {}.5 -S .. -v echo ">"{}.5 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg' stdout parallel -k -j9 --wd /tmp/ --basefile 1-col.txt --trc {}.5 -S .. -v echo ">"{}.5 ::: './ ab/c"d/ef g' ' ab/c"d/efg' ./b/bar ./b/foo "./ ab /c' d/ ef\"g" ./2-col.txt './a b/cd / ef/efg'
# A few rmdir errors are OK as we have multiple files in the same dirs # A few rmdir errors are OK as we have multiple files in the same dirs
find . -name '*.5' | sort find . -name '*.5' | LC_ALL=C sort
cd .. cd ..
rm -rf tmp rm -rf tmp

View file

@ -1317,6 +1317,8 @@ par_empty_command bug #54647: parset ignores empty lines
par_empty_command par_empty_command
par_empty_command Empty: par_empty_command Empty:
par_empty_command B: B par_empty_command B: B
par_empty_input_on_stdin https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=910470
par_empty_input_on_stdin This should give no output
par_empty_line ### Test bug: empty line for | sh with -k par_empty_line ### Test bug: empty line for | sh with -k
par_empty_line a par_empty_line a
par_empty_line b par_empty_line b

View file

@ -6,182 +6,182 @@ par_exit_code # but fish 2.4.0 returns 1 while X.X.X returns 0
par_exit_code ash /tmp/mysleep 100 137 par_exit_code ash /tmp/mysleep 100 137
par_exit_code ash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code ash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code ash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code ash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code ash parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code ash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code ash true;/tmp/mysleep 100 137 par_exit_code ash true;/tmp/mysleep 100 137
par_exit_code ash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code ash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code ash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code ash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code ash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code ash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code bash /tmp/mysleep 100 0 par_exit_code bash /tmp/mysleep 100 0
par_exit_code bash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code bash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code bash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code bash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code bash parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code bash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code bash true;/tmp/mysleep 100 137 par_exit_code bash true;/tmp/mysleep 100 137
par_exit_code bash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code bash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code bash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code bash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code bash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code bash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code csh /tmp/mysleep 100 137 par_exit_code csh /tmp/mysleep 100 137
par_exit_code csh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code csh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code csh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code csh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code csh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code csh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code csh true;/tmp/mysleep 100 137 par_exit_code csh true;/tmp/mysleep 100 137
par_exit_code csh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code csh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code csh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code csh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code csh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code csh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code dash /tmp/mysleep 100 137 par_exit_code dash /tmp/mysleep 100 137
par_exit_code dash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code dash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code dash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code dash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code dash parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code dash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code dash true;/tmp/mysleep 100 137 par_exit_code dash true;/tmp/mysleep 100 137
par_exit_code dash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code dash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code dash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code dash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code dash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code dash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code fish /tmp/mysleep 100 137 par_exit_code fish /tmp/mysleep 100 137
par_exit_code fish parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code fish parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code fish parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code fish parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code fish parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code fish parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code fish parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code fish parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code fish true;/tmp/mysleep 100 137 par_exit_code fish true;/tmp/mysleep 100 137
par_exit_code fish parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code fish parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code fish parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code fish parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code fish parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code fish parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code fish parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code fish parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code mksh /tmp/mysleep 100 0 par_exit_code mksh /tmp/mysleep 100 0
par_exit_code mksh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code mksh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code mksh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code mksh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code mksh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code mksh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code mksh true;/tmp/mysleep 100 137 par_exit_code mksh true;/tmp/mysleep 100 137
par_exit_code mksh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code mksh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code mksh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code mksh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code mksh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code mksh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code posh /tmp/mysleep 100 137 par_exit_code posh /tmp/mysleep 100 137
par_exit_code posh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code posh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code posh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code posh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code posh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code posh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code posh true;/tmp/mysleep 100 137 par_exit_code posh true;/tmp/mysleep 100 137
par_exit_code posh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code posh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code posh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code posh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code posh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code posh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code rc /tmp/mysleep 100 1 par_exit_code rc /tmp/mysleep 100 1
par_exit_code rc parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 1 par_exit_code rc parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 1 par_exit_code rc parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 true ::: 100 1 par_exit_code rc parallel --halt-on-error now,done=1 /bin/true ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 exit ::: 100 1 par_exit_code rc parallel --halt-on-error now,done=1 exit ::: 100 1
par_exit_code rc true;/tmp/mysleep 100 1 par_exit_code rc true;/tmp/mysleep 100 1
par_exit_code rc parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 1 par_exit_code rc parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 1 par_exit_code rc parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 "true;true" ::: 100 1 par_exit_code rc parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 "true;exit" ::: 100 1 par_exit_code rc parallel --halt-on-error now,done=1 "true;exit" ::: 100 1
par_exit_code sash /tmp/mysleep 100 255 par_exit_code sash /tmp/mysleep 100 255
par_exit_code sash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 255 par_exit_code sash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 255
par_exit_code sash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 255 par_exit_code sash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 255
par_exit_code sash parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code sash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code sash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code sash true;/tmp/mysleep 100 0 par_exit_code sash true;/tmp/mysleep 100 0
par_exit_code sash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 0 par_exit_code sash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 0 par_exit_code sash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code sash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 "true;exit" ::: 100 0 par_exit_code sash parallel --halt-on-error now,done=1 "true;exit" ::: 100 0
par_exit_code sh /tmp/mysleep 100 137 par_exit_code sh /tmp/mysleep 100 137
par_exit_code sh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code sh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code sh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code sh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code sh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code sh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code sh true;/tmp/mysleep 100 137 par_exit_code sh true;/tmp/mysleep 100 137
par_exit_code sh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code sh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code sh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code sh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code sh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code sh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code static-sh /tmp/mysleep 100 137 par_exit_code static-sh /tmp/mysleep 100 137
par_exit_code static-sh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code static-sh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code static-sh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code static-sh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code static-sh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code static-sh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code static-sh true;/tmp/mysleep 100 137 par_exit_code static-sh true;/tmp/mysleep 100 137
par_exit_code static-sh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code static-sh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code static-sh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code static-sh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code static-sh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code static-sh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code tcsh /tmp/mysleep 100 137 par_exit_code tcsh /tmp/mysleep 100 137
par_exit_code tcsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code tcsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code tcsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code tcsh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code tcsh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code tcsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code tcsh true;/tmp/mysleep 100 137 par_exit_code tcsh true;/tmp/mysleep 100 137
par_exit_code tcsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code tcsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code tcsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code tcsh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code tcsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code tcsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code fdsh /tmp/mysleep 100 137 par_exit_code fdsh /tmp/mysleep 100 137
par_exit_code fdsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 2 par_exit_code fdsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 2 par_exit_code fdsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code fdsh parallel --halt-on-error now,done=1 /bin/true ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code fdsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code fdsh true;/tmp/mysleep 100 137 par_exit_code fdsh true;/tmp/mysleep 100 137
par_exit_code fdsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 2 par_exit_code fdsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 2 par_exit_code fdsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code fdsh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code fdsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code fizsh /tmp/mysleep 100 137 par_exit_code fizsh /tmp/mysleep 100 137
par_exit_code fizsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code fizsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code fizsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code fizsh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code fizsh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code fizsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code fizsh true;/tmp/mysleep 100 137 par_exit_code fizsh true;/tmp/mysleep 100 137
par_exit_code fizsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code fizsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code fizsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code fizsh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code fizsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code fizsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code ksh /tmp/mysleep 100 0 par_exit_code ksh /tmp/mysleep 100 0
par_exit_code ksh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code ksh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code ksh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code ksh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code ksh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code ksh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code ksh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code ksh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code ksh true;/tmp/mysleep 100 0 par_exit_code ksh true;/tmp/mysleep 100 0
par_exit_code ksh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code ksh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ksh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code ksh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ksh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code ksh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code ksh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code ksh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code ksh93 /tmp/mysleep 100 0 par_exit_code ksh93 /tmp/mysleep 100 0
par_exit_code ksh93 parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code ksh93 parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code ksh93 parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code ksh93 parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code ksh93 parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code ksh93 parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code ksh93 true;/tmp/mysleep 100 0 par_exit_code ksh93 true;/tmp/mysleep 100 0
par_exit_code ksh93 parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code ksh93 parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code yash /tmp/mysleep 100 0 par_exit_code yash /tmp/mysleep 100 0
par_exit_code yash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code yash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code yash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code yash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code yash parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code yash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code yash true;/tmp/mysleep 100 0 par_exit_code yash true;/tmp/mysleep 100 0
par_exit_code yash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code yash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code yash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code yash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code yash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code yash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code zsh /tmp/mysleep 100 0 par_exit_code zsh /tmp/mysleep 100 0
par_exit_code zsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137 par_exit_code zsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137 par_exit_code zsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 true ::: 100 0 par_exit_code zsh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code zsh parallel --halt-on-error now,done=1 exit ::: 100 100 par_exit_code zsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code zsh true;/tmp/mysleep 100 0 par_exit_code zsh true;/tmp/mysleep 100 0
par_exit_code zsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code zsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137 par_exit_code zsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 "true;true" ::: 100 0 par_exit_code zsh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code zsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100 par_exit_code zsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code parallel: This job finished: par_exit_code parallel: This job finished:
par_exit_code runit par_exit_code runit

View file

@ -243,19 +243,6 @@ par_kill_children_timeout 0 0 0
par_line_buffer ### --line-buffer par_line_buffer ### --line-buffer
par_line_buffer 55 55 120 par_line_buffer 55 55 120
par_line_buffer These must diff: 1 par_line_buffer These must diff: 1
par_linebuffer_tag_slow_output Test output tag with mixing halflines
par_linebuffer_tag_slow_output a aH
par_linebuffer_tag_slow_output b bH
par_linebuffer_tag_slow_output a aa
par_linebuffer_tag_slow_output b ba
par_linebuffer_tag_slow_output a al
par_linebuffer_tag_slow_output b bl
par_linebuffer_tag_slow_output a af
par_linebuffer_tag_slow_output b bf
par_linebuffer_tag_slow_output a a
par_linebuffer_tag_slow_output a
par_linebuffer_tag_slow_output b b
par_linebuffer_tag_slow_output b
par_long_line_remote ### Deal with long command lines on remote servers par_long_line_remote ### Deal with long command lines on remote servers
par_long_line_remote 2 6 30006 par_long_line_remote 2 6 30006
par_long_line_remote 3 50 250050 par_long_line_remote 3 50 250050
@ -520,6 +507,22 @@ par_retries_all_fail 7
par_retries_all_fail 8 par_retries_all_fail 8
par_round_robin_blocks bug #49664: --round-robin does not complete par_round_robin_blocks bug #49664: --round-robin does not complete
par_round_robin_blocks 8 par_round_robin_blocks 8
par_sem_2jobs ### Test semaphore 2 jobs running simultaneously
par_sem_2jobs job1a 1
par_sem_2jobs job2a 2
par_sem_2jobs job1b 3
par_sem_2jobs job3a 4
par_sem_2jobs job2b 5
par_sem_2jobs job3b 6
par_sem_2jobs done
par_semaphore ### Test if parallel invoked as sem will run parallel --semaphore
par_semaphore job1a 1
par_semaphore job2a 2
par_semaphore job1b 3
par_semaphore job3a 4
par_semaphore job2b 5
par_semaphore job3b 6
par_semaphore done
par_slow_total_jobs bug #51006: Slow total_jobs() eats job par_slow_total_jobs bug #51006: Slow total_jobs() eats job
par_slow_total_jobs a par_slow_total_jobs a
par_slow_total_jobs b par_slow_total_jobs b

View file

@ -619,3 +619,6 @@ par_test_XI_mI a7 b1 2 3 4 5 6 7
par_test_XI_mI a8 b1 2 3 4 5 6 7 8 par_test_XI_mI a8 b1 2 3 4 5 6 7 8
par_test_XI_mI a9 b1 2 3 4 5 6 7 8 9 par_test_XI_mI a9 b1 2 3 4 5 6 7 8 9
par_test_XI_mI a10 b1 2 3 4 5 6 7 8 9 10 par_test_XI_mI a10 b1 2 3 4 5 6 7 8 9 10
par_too_long_line_X bug #54869: Long lines break
par_too_long_line_X 1 29302 131012
par_too_long_line_X 1 12698 63490

View file

@ -251,7 +251,7 @@ par_test_detected_shell test_known_shell_c fizsh Global::shell /usr/bin/zsh
par_test_detected_shell test_known_shell_c ksh Global::shell /usr/bin/ksh par_test_detected_shell test_known_shell_c ksh Global::shell /usr/bin/ksh
par_test_detected_shell test_known_shell_c ksh93 Global::shell /bin/ksh93 par_test_detected_shell test_known_shell_c ksh93 Global::shell /bin/ksh93
par_test_detected_shell test_known_shell_c mksh Global::shell /bin/mksh par_test_detected_shell test_known_shell_c mksh Global::shell /bin/mksh
par_test_detected_shell test_known_shell_c posh Global::shell /bin/posh par_test_detected_shell test_known_shell_c posh Global::shell /usr/bin/posh
par_test_detected_shell test_known_shell_c rbash Global::shell /bin/rbash par_test_detected_shell test_known_shell_c rbash Global::shell /bin/rbash
par_test_detected_shell test_known_shell_c rush Local configuration error occurred. par_test_detected_shell test_known_shell_c rush Local configuration error occurred.
par_test_detected_shell test_known_shell_c rush Contact the systems administrator for further assistance. par_test_detected_shell test_known_shell_c rush Contact the systems administrator for further assistance.
@ -267,11 +267,11 @@ par_test_detected_shell test_known_shell_pipe bash Global::shell /bin/bash
par_test_detected_shell test_known_shell_pipe csh Global::shell /bin/csh par_test_detected_shell test_known_shell_pipe csh Global::shell /bin/csh
par_test_detected_shell test_known_shell_pipe dash Global::shell /bin/dash par_test_detected_shell test_known_shell_pipe dash Global::shell /bin/dash
par_test_detected_shell test_known_shell_pipe fish Global::shell /usr/bin/fish par_test_detected_shell test_known_shell_pipe fish Global::shell /usr/bin/fish
par_test_detected_shell test_known_shell_pipe fizsh Global::shell /usr/bin/zsh par_test_detected_shell test_known_shell_pipe fizsh Global::shell /usr/bin/fizsh
par_test_detected_shell test_known_shell_pipe ksh Global::shell /usr/bin/ksh par_test_detected_shell test_known_shell_pipe ksh Global::shell /usr/bin/ksh
par_test_detected_shell test_known_shell_pipe ksh93 Global::shell /bin/ksh93 par_test_detected_shell test_known_shell_pipe ksh93 Global::shell /bin/ksh93
par_test_detected_shell test_known_shell_pipe mksh Global::shell /bin/mksh par_test_detected_shell test_known_shell_pipe mksh Global::shell /bin/mksh
par_test_detected_shell test_known_shell_pipe posh Global::shell /bin/posh par_test_detected_shell test_known_shell_pipe posh Global::shell /usr/bin/posh
par_test_detected_shell test_known_shell_pipe rbash Global::shell /bin/rbash par_test_detected_shell test_known_shell_pipe rbash Global::shell /bin/rbash
par_test_detected_shell test_known_shell_pipe rush Local configuration error occurred. par_test_detected_shell test_known_shell_pipe rush Local configuration error occurred.
par_test_detected_shell test_known_shell_pipe rush Contact the systems administrator for further assistance. par_test_detected_shell test_known_shell_pipe rush Contact the systems administrator for further assistance.

View file

@ -81,11 +81,6 @@ par_nice parallel: SIGTERM received. No new jobs will be started.
par_nice parallel: Waiting for these 2 jobs to finish. Send SIGTERM again to stop now. par_nice parallel: Waiting for these 2 jobs to finish. Send SIGTERM again to stop now.
par_nice parallel: bzip2 < /dev/zero par_nice parallel: bzip2 < /dev/zero
par_nice parallel: bzip2 < /dev/zero par_nice parallel: bzip2 < /dev/zero
par_parcat_mixing parcat output should mix: a b a b
par_parcat_mixing astart
par_parcat_mixing bstart
par_parcat_mixing aend
par_parcat_mixing bend
par_pipe_unneeded_procs ### Test bug #34241: --pipe should not spawn unneeded processes par_pipe_unneeded_procs ### Test bug #34241: --pipe should not spawn unneeded processes
par_pipe_unneeded_procs 1 par_pipe_unneeded_procs 1
par_pipe_unneeded_procs 2 par_pipe_unneeded_procs 2

View file

@ -80,6 +80,24 @@ par_hostgroup tange
par_hostgroup tange par_hostgroup tange
par_hostgroup tcsh par_hostgroup tcsh
par_hostgroup tcsh par_hostgroup tcsh
par_linebuffer_tag_slow_output Test output tag with mixing halflines
par_linebuffer_tag_slow_output a aH
par_linebuffer_tag_slow_output b bH
par_linebuffer_tag_slow_output a aa
par_linebuffer_tag_slow_output b ba
par_linebuffer_tag_slow_output a al
par_linebuffer_tag_slow_output b bl
par_linebuffer_tag_slow_output a af
par_linebuffer_tag_slow_output b bf
par_linebuffer_tag_slow_output a a
par_linebuffer_tag_slow_output a
par_linebuffer_tag_slow_output b b
par_linebuffer_tag_slow_output b
par_parcat_mixing parcat output should mix: a b a b
par_parcat_mixing astart
par_parcat_mixing bstart
par_parcat_mixing aend
par_parcat_mixing bend
par_testhalt now fail 0 true ### testhalt --halt now,fail=0 par_testhalt now fail 0 true ### testhalt --halt now,fail=0
par_testhalt now fail 0 true job 1 par_testhalt now fail 0 true job 1
par_testhalt now fail 0 true parallel: This job failed: par_testhalt now fail 0 true parallel: This job failed:

View file

@ -147,7 +147,7 @@ ls: No match.
ls: cannot access './--?.a': No such file or directory ls: cannot access './--?.a': No such file or directory
echo '### Test --trc "/tmp/./--- /A" "/tmp/./ ---/B"' echo '### Test --trc "/tmp/./--- /A" "/tmp/./ ---/B"'
### Test --trc "/tmp/./--- /A" "/tmp/./ ---/B" ### Test --trc "/tmp/./--- /A" "/tmp/./ ---/B"
mkdir -p '/tmp/./--- ' '/tmp/ ---'; touch -- '/tmp/./--- /A' '/tmp/ ---/B'; rm -f ./---?/A.a ./?---/B.a; parallel --trc {=s:.*/./::=}.a -S csh@lo,sh@lo touch ./{=s:.*/./::=}.a ::: '/tmp/./--- /A' '/tmp/./ ---/B'; ls ./---?/A.a ./?---/B.a; parallel --nonall -k -S csh@lo,sh@lo 'ls ./?--- ./---? || echo OK'; echo '### bug #46519: --onall ignores --transfer' mkdir -p '/tmp/./--- ' '/tmp/ ---'; touch -- '/tmp/./--- /A' '/tmp/ ---/B'; rm -f ./---?/A.a ./?---/B.a; parallel --trc {=s:.*/./::=}.a -S csh@lo,sh@lo touch ./{=s:.*/./::=}.a ::: '/tmp/./--- /A' '/tmp/./ ---/B'; ls ./---?/A.a ./?---/B.a | LC_ALL=C sort; parallel --nonall -k -S csh@lo,sh@lo 'ls ./?--- ./---? || echo OK' | LC_ALL=C sort; echo '### bug #46519: --onall ignores --transfer'
./ ---/B.a ./ ---/B.a
./--- /A.a ./--- /A.a
OK OK

View file

@ -81,15 +81,7 @@ echo '### Test tmux works on different shells'
0 0
4 4
# command is currently too long for csh. Maybe it can be fixed? # command is currently too long for csh. Maybe it can be fixed?
Word too long. 0
Word too long.
Word too long.
Word too long.
4
Word too long.
Word too long.
Word too long.
Word too long.
4 4
echo '### works' echo '### works'
### works ### works

View file

@ -57,7 +57,7 @@ par_autossh AUTOSSH_DEBUG - turn logging to maximum verbosity and log
par_autossh stderr par_autossh stderr
par_autossh par_autossh
par_autossh rsync: connection unexpectedly closed (0 bytes received so far) [sender] par_autossh rsync: connection unexpectedly closed (0 bytes received so far) [sender]
par_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1] par_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(235) [sender=3.1.2]
par_autossh /usr/lib/autossh/autossh: invalid option -- '-' par_autossh /usr/lib/autossh/autossh: invalid option -- '-'
par_autossh usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS] par_autossh usage: autossh [-V] [-M monitor_port[:echo_port]] [-f] [SSH_OPTIONS]
par_autossh par_autossh
@ -89,4 +89,4 @@ par_autossh AUTOSSH_DEBUG - turn logging to maximum verbosity and log
par_autossh stderr par_autossh stderr
par_autossh par_autossh
par_autossh rsync: connection unexpectedly closed (0 bytes received so far) [Receiver] par_autossh rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
par_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(226) [Receiver=3.1.1] par_autossh rsync error: error in rsync protocol data stream (code 12) at io.c(235) [Receiver=3.1.2]

View file

@ -129,18 +129,16 @@ par_zsh_man exit value 2 should be 2
par_zsh_man Unknown option: no-such-option par_zsh_man Unknown option: no-such-option
par_zsh_man exit value 255 should be 255 par_zsh_man exit value 255 should be 255
par_zsh_funky par_zsh_funky
par_zsh_funky  par_zsh_funky C-] !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<>걗깂뀊뇠뎷땶뜋룓몤뱮븭뿕솞썫M-옝젩∀ㄵ┬øガ<C3B8><E382AC>굉낫독렇뭔뻤슭오좌쳐탬픽<ED83AC>盖誥國喫戇倆厘描白M-]泗褻栒鴨鉛僥幽日全猝膣逮擢票亨涍<E4BAA8>-funky
par_zsh_funky  par_zsh_funky C-] !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<>걗깂뀊뇠뎷땶뜋룓몤뱮븭뿕솞썫M-옝젩∀ㄵ┬øガ<C3B8><E382AC>굉낫독렇뭔뻤슭오좌쳐탬픽<ED83AC>盖誥國喫戇倆厘描白M-]泗褻栒鴨鉛僥幽日全猝膣逮擢票亨涍<E4BAA8>-funky
par_zsh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_zsh_funky  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<D096><E29486><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<E8B28A><E9BCAC><EFBFBD><EFBFBD>-funky
par_zsh_funky space 6 par_zsh_funky space 6
par_zsh_funky space 6 par_zsh_funky space 6
par_zsh_funky ' ' par_zsh_funky ' '
par_zsh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€亗儎厗噲墛媽崕彁憭摂晼棙櫄洔潪煚、¥ウЖ┆<EFBFBD><EFBFBD><EFBFBD>辈炒刀犯购患骄坷谅媚牌侨墒颂臀闲岩釉罩棕仝圮蒉哙徕沅彐玷殛腱眍镳耱篝貊鼬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' par_zsh_funky '  !"#$%&'"'"'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<EFBFBD>걗깂뀊뇠뎷땶뜋룓몤뱮븭뿕솞썫씆윝、ⅵŁかЛ<EFBFBD>갚껙뉘떱많본섹씩읒쩠컵판훔墾勁卦今錄桐虜妹膊覆泗褻栒鴨鉛僥幽日全猝膣逮擢票亨涍<EFBFBD>'
par_zsh_funky 3 arg alias_works par_zsh_funky 3 arg alias_works
par_zsh_funky 3 arg alias_works_over_ssh par_zsh_funky 3 arg alias_works_over_ssh
par_zsh_funky Funky- par_zsh_funky Funky-
par_zsh_funky Funky- par_zsh_funky Funky-
par_zsh_funky assoc_val_a par_zsh_funky assoc_val_a
par_zsh_funky assoc_val_a par_zsh_funky assoc_val_a
par_zsh_funky function_works par_zsh_funky function_works
@ -587,7 +585,7 @@ par_mksh_parset foo bar baz
par_mksh_parset ### env_parset par_mksh_parset ### env_parset
par_mksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz par_mksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_mksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz par_mksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_mksh_parset par_mksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_mksh_parset newline1 par_mksh_parset newline1
par_mksh_parset newline2 par_mksh_parset newline2
par_mksh_parset 1 par_mksh_parset 1
@ -798,7 +796,7 @@ par_ksh_parset foo bar baz
par_ksh_parset ### env_parset par_ksh_parset ### env_parset
par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_ksh_parset par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_ksh_parset newline1 par_ksh_parset newline1
par_ksh_parset newline2 par_ksh_parset newline2
par_ksh_parset 1 par_ksh_parset 1
@ -1342,8 +1340,8 @@ par_csh_man arrays
par_csh_man arrays par_csh_man arrays
par_csh_man cat ... | parallel --pipe [options] [command [arguments]] par_csh_man cat ... | parallel --pipe [options] [command [arguments]]
par_csh_man env_parallel par_csh_man env_parallel
par_csh_man exit value -1 should be 255
par_csh_man exit value 2 should be 2 par_csh_man exit value 2 should be 2
par_csh_man exit value 255 should be 255
par_csh_man level par_csh_man level
par_csh_man multi par_csh_man multi
par_csh_man parallel [options] [command [arguments]] (::: arguments|:::: argfile(s))... par_csh_man parallel [options] [command [arguments]] (::: arguments|:::: argfile(s))...
@ -1368,15 +1366,18 @@ par_csh_man work,
par_csh_man {3} {3.} {3/} {3/.} {=3 perl code =} Positional replacement strings par_csh_man {3} {3.} {3/} {3/.} {=3 perl code =} Positional replacement strings
par_csh_man {} {.} {/} {/.} {#} {%} {= perl code =} Replacement strings par_csh_man {} {.} {/} {/.} {#} {%} {= perl code =} Replacement strings
par_csh_funky 3 arg alias_works par_csh_funky 3 arg alias_works
par_csh_funky
par_csh_funky myvar works par_csh_funky myvar works
par_csh_funky space special chars problem par_csh_funky space special chars problem
par_csh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works par_csh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works
par_csh_funky func_echo: Command not found. par_csh_funky func_echo: Command not found.
par_csh_funky 3 arg alias_works_over_ssh par_csh_funky 3 arg alias_works_over_ssh
par_csh_funky
par_csh_funky myvar works par_csh_funky myvar works
par_csh_funky space special chars problem par_csh_funky space special chars problem
par_csh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works_over_ssh par_csh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works_over_ssh
par_csh_funky func_echo: Command not found. par_csh_funky func_echo: Command not found.
par_csh_funky
par_csh_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ par_csh_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_csh_environment_too_big Not implemented par_csh_environment_too_big Not implemented
par_csh_env_parallel_session Not implemented par_csh_env_parallel_session Not implemented
@ -1429,7 +1430,7 @@ par_bash_parset foo bar baz
par_bash_parset ### env_parset par_bash_parset ### env_parset
par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_bash_parset par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_bash_parset newline1 par_bash_parset newline1
par_bash_parset newline2 par_bash_parset newline2
par_bash_parset 1 par_bash_parset 1
@ -1523,12 +1524,10 @@ par_bash_man exit value 2 should be 2
par_bash_man Unknown option: no-such-option par_bash_man Unknown option: no-such-option
par_bash_man exit value 255 should be 255 par_bash_man exit value 255 should be 255
par_bash_funky par_bash_funky
par_bash_funky
par_bash_funky
par_bash_funky  par_bash_funky 
par_bash_funky  par_bash_funky 
par_bash_funky par_bash_funky -funkymultiline
par_bash_funky par_bash_funky -funkymultiline
par_bash_funky space 6 par_bash_funky space 6
par_bash_funky space 6 par_bash_funky space 6
par_bash_funky ' ' par_bash_funky ' '
@ -1546,8 +1545,6 @@ par_bash_funky function_works
par_bash_funky function_works_over_ssh par_bash_funky function_works_over_ssh
par_bash_funky myvar works par_bash_funky myvar works
par_bash_funky myvar works par_bash_funky myvar works
par_bash_funky -funkymultiline
par_bash_funky -funkymultiline
par_bash_environment_too_big bug #50815: env_parallel should warn if the environment is too big par_bash_environment_too_big bug #50815: env_parallel should warn if the environment is too big
par_bash_environment_too_big OK_bigvar par_bash_environment_too_big OK_bigvar
par_bash_environment_too_big OK_bigvar_remote par_bash_environment_too_big OK_bigvar_remote

View file

@ -15,14 +15,14 @@ par_keeporder job2
par_load_csh ### Gave Word too long. par_load_csh ### Gave Word too long.
par_load_csh a par_load_csh a
par_path_remote_bash bug #47695: How to set $PATH on remote? Bash par_path_remote_bash bug #47695: How to set $PATH on remote? Bash
par_path_remote_bash logged in
par_path_remote_bash BASH Path before: /bin:/usr/bin with no parallel par_path_remote_bash BASH Path before: /bin:/usr/bin with no parallel
par_path_remote_bash -bash: line 2: parallel: command not found par_path_remote_bash -bash: line 3: parallel: command not found
par_path_remote_bash ^^^^^^^^ Not found is OK par_path_remote_bash ^^^^^^^^ Not found is OK
par_path_remote_bash /bin:/usr/bin:/tmp OK par_path_remote_bash /bin:/usr/bin:/tmp OK
par_path_remote_bash par_path_remote_bash
par_path_remote_csh bug #47695: How to set $PATH on remote? csh par_path_remote_csh bug #47695: How to set $PATH on remote? csh
par_path_remote_csh Warning: no access to tty (Bad file descriptor). par_path_remote_csh logged in
par_path_remote_csh Thus no job control in this shell.
par_path_remote_csh CSH Path before: /bin:/usr/bin with no parallel par_path_remote_csh CSH Path before: /bin:/usr/bin with no parallel
par_path_remote_csh parallel: Command not found. par_path_remote_csh parallel: Command not found.
par_path_remote_csh ^^^^^^^^ Not found is OK par_path_remote_csh ^^^^^^^^ Not found is OK

View file

@ -39,7 +39,7 @@ https://www.gnu.org/software/parallel/parallel_design.html#Citation-notice
To silence this citation notice: run 'parallel --citation' once. To silence this citation notice: run 'parallel --citation' once.
10 files to edit 10 files to edit
[?1049h[?1h=[?12;25h[?12l[?25h[?25l"file1" [New File]~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ [?12l[?25h[?25lE173: 9 more files to edit[?12l[?25h[?1l>[?1049lAcademic tradition requires you to cite works you base your article on. [?2004h[?1049h[?1h=[?2004h[?12h[?12l[?25l"file1" [New File] [>c]10;?]11;?~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ 0,0-1All[?25h[?25lE173: 9 more files to edit[?2004h0,0-1All[?25h[?2004l[?2004l[?1l>[?1049lAcademic tradition requires you to cite works you base your article on.
If you use programs that use GNU Parallel to process data for an article in a If you use programs that use GNU Parallel to process data for an article in a
scientific publication, please cite: scientific publication, please cite:

View file

@ -62,7 +62,7 @@ touch more_than_5000-9997
touch more_than_5000-9998 touch more_than_5000-9998
touch more_than_5000-9999 touch more_than_5000-9999
### rm ### rm
ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | LC_ALL=C sort
1 1-col.txt 1 1-col.txt
1 1-col.txt.diff 1 1-col.txt.diff
1 2-col.txt 1 2-col.txt
@ -171,7 +171,7 @@ ls | parallel -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=
4 ab 4 ab
4 b 4 b
6 a 6 a
ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | sort ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\" "{=$_=pQ($_)=}"\n\"}"' | LC_ALL=C sort
1 1-col.txt 1 1-col.txt
1 1-col.txt.diff 1 1-col.txt.diff
1 2-col.txt 1 2-col.txt
@ -280,7 +280,7 @@ ls | parallel --group -j500 'sleep 1; find {} -type f | perl -ne "END{print $..\
4 ab 4 ab
4 b 4 b
6 a 6 a
find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | LC_ALL=C sort
./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff
./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff
./ ab/c"d/ef g.diff ./ ab/c"d/ef g.diff
@ -299,7 +299,7 @@ find . -type f | parallel --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,
./a/bar.diff ./a/bar.diff
./b/bar.diff ./b/bar.diff
./b/bar.diff ./b/bar.diff
find . -type f | parallel -v --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | sort find . -type f | parallel -v --group "perl -ne '/^\\S+\\s+\\S+$/ and print \$ARGV,\"\\n\"'" | LC_ALL=C sort
./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff
./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff
./ ab/c"d/ef g.diff ./ ab/c"d/ef g.diff
@ -439,7 +439,7 @@ perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9996
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9997 perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9997
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9998 perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9998
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9999 perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' ./more_than_5000-9999
find . -type f | parallel -q --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort find . -type f | parallel -q --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | LC_ALL=C sort
./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff
./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff
./ ab/c"d/ef g.diff ./ ab/c"d/ef g.diff
@ -458,7 +458,7 @@ find . -type f | parallel -q --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\
./a/bar.diff ./a/bar.diff
./b/bar.diff ./b/bar.diff
./b/bar.diff ./b/bar.diff
find . -type f | parallel -qv --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | sort find . -type f | parallel -qv --group perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' | LC_ALL=C sort
./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff
./ ab /c' d/ ef"g.diff ./ ab /c' d/ ef"g.diff
./ ab/c"d/ef g.diff ./ ab/c"d/ef g.diff

View file

@ -81,7 +81,7 @@ bug #37956: --colsep does not default to '\t' as specified in the man page.
one 1 one 1
echo '### Test --tollef' echo '### Test --tollef'
### Test --tollef ### Test --tollef
stdout parallel -k --tollef echo -- 1 2 3 ::: a b c | sort stdout parallel -k --tollef echo -- 1 2 3 ::: a b c | LC_ALL=C sort
parallel: Error: --tollef has been retired. parallel: Error: --tollef has been retired.
parallel: Error: Remove --tollef or use --gnu to override --tollef. parallel: Error: Remove --tollef or use --gnu to override --tollef.
echo '### Test --tollef --gnu' echo '### Test --tollef --gnu'

View file

@ -15,7 +15,7 @@ par_env_newline_backslash_onall_bash 8 10
par_env_newline_backslash_onall_bash 8 10V2= par_env_newline_backslash_onall_bash 8 10V2=
par_env_newline_backslash_onall_bash 8 2\\ \92V2=\\ \92 par_env_newline_backslash_onall_bash 8 2\\ \92V2=\\ \92
par_env_newline_backslash_onall_csh ### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails par_env_newline_backslash_onall_csh ### Test --env for \n and \\ - single and double --onall (*csh only) - no output is good but csh fails
par_env_newline_backslash_onall_csh 8 Unmatched ". par_env_newline_backslash_onall_csh 8 Unmatched '"'.
par_space ### Test --env - https://savannah.gnu.org/bugs/?37351 par_space ### Test --env - https://savannah.gnu.org/bugs/?37351
par_space a 2 spaces b 1 par_space a 2 spaces b 1
par_space a 2 spaces b 1 par_space a 2 spaces b 1

View file

@ -17,7 +17,7 @@ echo '### This causes problems if we kill child processes'; # 2>/dev/null to avo
437c0d47a99b9a7c5bcb1d132f94c2e6 - 437c0d47a99b9a7c5bcb1d132f94c2e6 -
echo '### This causes problems if we kill child processes (II)'; # 2>/dev/null to avoid parallel: Warning: Starting 45 processes took > 2 sec. 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) ### 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 seq 1 40 | parallel -j 0 seq 1 10 '| parallel -j 3 echo' 2>/dev/null | LC_ALL=C sort | md5sum
d7fb96d6a56d4347bc24930a395c431a - d7fb96d6a56d4347bc24930a395c431a -
echo '### Test -m'; (echo foo;echo bar) | parallel -j1 -m echo 1{}2{}3 A{}B{}C echo '### Test -m'; (echo foo;echo bar) | parallel -j1 -m echo 1{}2{}3 A{}B{}C
### Test -m ### Test -m

View file

@ -61,7 +61,7 @@ echo '### Check that 4 processes are really used'
echo '### --version must have higher priority than retired options' echo '### --version must have higher priority than retired options'
### --version must have higher priority than retired options ### --version must have higher priority than retired options
$NICEPAR --version -g -Y -U -W -T | tail $NICEPAR --version -g -Y -U -W -T | tail
GNU parallel 20180916 GNU parallel 20180923
Copyright (C) 2007-2018 Ole Tange and Free Software Foundation, Inc. Copyright (C) 2007-2018 Ole Tange and Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it. This is free software: you are free to change and redistribute it.

View file

@ -6,19 +6,15 @@ MAXTIME=50 RETRIES=2 MAXPROC=11 MAXINNERPROC=3
< alpha < alpha
7d4 7d4
< syllable < syllable
10d6 13d9
< openindiana
13d8
< debian-ppc < debian-ppc
17d11
< ubuntu
28,32d21 28,32d21
< dragonfly < dragonfly
< vax < vax
< ultrix < ultrix
< minix < minix
< irix < irix
34,35d22 34,35d23
< beaglebone < beaglebone
< cubieboard2 < cubieboard2
### Copy commands to servers ### Copy commands to servers
@ -28,11 +24,13 @@ bin/parallel tru64 copy tru64 bin/parallel parallel
bin/parallel hpux-ia64 copy hpux-ia64 bin/parallel parallel bin/parallel hpux-ia64 copy hpux-ia64 bin/parallel parallel
bin/parallel raspbian copy raspbian bin/parallel parallel bin/parallel raspbian copy raspbian bin/parallel parallel
bin/parallel solaris copy solaris bin/parallel parallel bin/parallel solaris copy solaris bin/parallel parallel
bin/parallel openindiana copy openindiana bin/parallel parallel
bin/parallel aix copy aix bin/parallel parallel bin/parallel aix copy aix bin/parallel parallel
bin/parallel hpux copy hpux bin/parallel parallel bin/parallel hpux copy hpux bin/parallel parallel
bin/parallel suse copy suse bin/parallel parallel bin/parallel suse copy suse bin/parallel parallel
bin/parallel solaris-x86 copy solaris-x86 bin/parallel parallel bin/parallel solaris-x86 copy solaris-x86 bin/parallel parallel
bin/parallel mandriva copy mandriva bin/parallel parallel bin/parallel mandriva copy mandriva bin/parallel parallel
bin/parallel ubuntu copy ubuntu bin/parallel parallel
bin/parallel scosysv copy scosysv bin/parallel parallel bin/parallel scosysv copy scosysv bin/parallel parallel
bin/parallel unixware copy unixware bin/parallel parallel bin/parallel unixware copy unixware bin/parallel parallel
bin/parallel centos copy centos bin/parallel parallel bin/parallel centos copy centos bin/parallel parallel
@ -52,11 +50,13 @@ bin/env_parallel tru64 copy tru64 bin/env_parallel env_parallel
bin/env_parallel hpux-ia64 copy hpux-ia64 bin/env_parallel env_parallel bin/env_parallel hpux-ia64 copy hpux-ia64 bin/env_parallel env_parallel
bin/env_parallel raspbian copy raspbian bin/env_parallel env_parallel bin/env_parallel raspbian copy raspbian bin/env_parallel env_parallel
bin/env_parallel solaris copy solaris bin/env_parallel env_parallel bin/env_parallel solaris copy solaris bin/env_parallel env_parallel
bin/env_parallel openindiana copy openindiana bin/env_parallel env_parallel
bin/env_parallel aix copy aix bin/env_parallel env_parallel bin/env_parallel aix copy aix bin/env_parallel env_parallel
bin/env_parallel hpux copy hpux bin/env_parallel env_parallel bin/env_parallel hpux copy hpux bin/env_parallel env_parallel
bin/env_parallel suse copy suse bin/env_parallel env_parallel bin/env_parallel suse copy suse bin/env_parallel env_parallel
bin/env_parallel solaris-x86 copy solaris-x86 bin/env_parallel env_parallel bin/env_parallel solaris-x86 copy solaris-x86 bin/env_parallel env_parallel
bin/env_parallel mandriva copy mandriva bin/env_parallel env_parallel bin/env_parallel mandriva copy mandriva bin/env_parallel env_parallel
bin/env_parallel ubuntu copy ubuntu bin/env_parallel env_parallel
bin/env_parallel scosysv copy scosysv bin/env_parallel env_parallel bin/env_parallel scosysv copy scosysv bin/env_parallel env_parallel
bin/env_parallel unixware copy unixware bin/env_parallel env_parallel bin/env_parallel unixware copy unixware bin/env_parallel env_parallel
bin/env_parallel centos copy centos bin/env_parallel env_parallel bin/env_parallel centos copy centos bin/env_parallel env_parallel
@ -76,11 +76,13 @@ bin/env_parallel.ash tru64 copy tru64 bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash hpux-ia64 copy hpux-ia64 bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash hpux-ia64 copy hpux-ia64 bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash raspbian copy raspbian bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash raspbian copy raspbian bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash solaris copy solaris bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash solaris copy solaris bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash openindiana copy openindiana bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash aix copy aix bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash aix copy aix bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash hpux copy hpux bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash hpux copy hpux bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash suse copy suse bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash suse copy suse bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash solaris-x86 copy solaris-x86 bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash solaris-x86 copy solaris-x86 bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash mandriva copy mandriva bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash mandriva copy mandriva bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash ubuntu copy ubuntu bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash scosysv copy scosysv bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash scosysv copy scosysv bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash unixware copy unixware bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash unixware copy unixware bin/env_parallel.ash env_parallel.ash
bin/env_parallel.ash centos copy centos bin/env_parallel.ash env_parallel.ash bin/env_parallel.ash centos copy centos bin/env_parallel.ash env_parallel.ash
@ -100,11 +102,13 @@ bin/env_parallel.bash tru64 copy tru64 bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash hpux-ia64 copy hpux-ia64 bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash hpux-ia64 copy hpux-ia64 bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash raspbian copy raspbian bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash raspbian copy raspbian bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash solaris copy solaris bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash solaris copy solaris bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash openindiana copy openindiana bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash aix copy aix bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash aix copy aix bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash hpux copy hpux bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash hpux copy hpux bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash suse copy suse bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash suse copy suse bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash solaris-x86 copy solaris-x86 bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash solaris-x86 copy solaris-x86 bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash mandriva copy mandriva bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash mandriva copy mandriva bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash ubuntu copy ubuntu bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash scosysv copy scosysv bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash scosysv copy scosysv bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash unixware copy unixware bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash unixware copy unixware bin/env_parallel.bash env_parallel.bash
bin/env_parallel.bash centos copy centos bin/env_parallel.bash env_parallel.bash bin/env_parallel.bash centos copy centos bin/env_parallel.bash env_parallel.bash
@ -124,11 +128,13 @@ bin/env_parallel.csh tru64 copy tru64 bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh hpux-ia64 copy hpux-ia64 bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh hpux-ia64 copy hpux-ia64 bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh raspbian copy raspbian bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh raspbian copy raspbian bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh solaris copy solaris bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh solaris copy solaris bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh openindiana copy openindiana bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh aix copy aix bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh aix copy aix bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh hpux copy hpux bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh hpux copy hpux bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh suse copy suse bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh suse copy suse bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh solaris-x86 copy solaris-x86 bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh solaris-x86 copy solaris-x86 bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh mandriva copy mandriva bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh mandriva copy mandriva bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh ubuntu copy ubuntu bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh scosysv copy scosysv bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh scosysv copy scosysv bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh unixware copy unixware bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh unixware copy unixware bin/env_parallel.csh env_parallel.csh
bin/env_parallel.csh centos copy centos bin/env_parallel.csh env_parallel.csh bin/env_parallel.csh centos copy centos bin/env_parallel.csh env_parallel.csh
@ -148,11 +154,13 @@ bin/env_parallel.dash tru64 copy tru64 bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash hpux-ia64 copy hpux-ia64 bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash hpux-ia64 copy hpux-ia64 bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash raspbian copy raspbian bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash raspbian copy raspbian bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash solaris copy solaris bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash solaris copy solaris bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash openindiana copy openindiana bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash aix copy aix bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash aix copy aix bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash hpux copy hpux bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash hpux copy hpux bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash suse copy suse bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash suse copy suse bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash solaris-x86 copy solaris-x86 bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash solaris-x86 copy solaris-x86 bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash mandriva copy mandriva bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash mandriva copy mandriva bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash ubuntu copy ubuntu bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash scosysv copy scosysv bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash scosysv copy scosysv bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash unixware copy unixware bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash unixware copy unixware bin/env_parallel.dash env_parallel.dash
bin/env_parallel.dash centos copy centos bin/env_parallel.dash env_parallel.dash bin/env_parallel.dash centos copy centos bin/env_parallel.dash env_parallel.dash
@ -172,11 +180,13 @@ bin/env_parallel.fish tru64 copy tru64 bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish hpux-ia64 copy hpux-ia64 bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish hpux-ia64 copy hpux-ia64 bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish raspbian copy raspbian bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish raspbian copy raspbian bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish solaris copy solaris bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish solaris copy solaris bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish openindiana copy openindiana bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish aix copy aix bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish aix copy aix bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish hpux copy hpux bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish hpux copy hpux bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish suse copy suse bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish suse copy suse bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish solaris-x86 copy solaris-x86 bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish solaris-x86 copy solaris-x86 bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish mandriva copy mandriva bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish mandriva copy mandriva bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish ubuntu copy ubuntu bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish scosysv copy scosysv bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish scosysv copy scosysv bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish unixware copy unixware bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish unixware copy unixware bin/env_parallel.fish env_parallel.fish
bin/env_parallel.fish centos copy centos bin/env_parallel.fish env_parallel.fish bin/env_parallel.fish centos copy centos bin/env_parallel.fish env_parallel.fish
@ -196,11 +206,13 @@ bin/env_parallel.ksh tru64 copy tru64 bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh hpux-ia64 copy hpux-ia64 bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh hpux-ia64 copy hpux-ia64 bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh raspbian copy raspbian bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh raspbian copy raspbian bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh solaris copy solaris bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh solaris copy solaris bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh openindiana copy openindiana bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh aix copy aix bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh aix copy aix bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh hpux copy hpux bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh hpux copy hpux bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh suse copy suse bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh suse copy suse bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh solaris-x86 copy solaris-x86 bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh solaris-x86 copy solaris-x86 bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh mandriva copy mandriva bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh mandriva copy mandriva bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh ubuntu copy ubuntu bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh scosysv copy scosysv bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh scosysv copy scosysv bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh unixware copy unixware bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh unixware copy unixware bin/env_parallel.ksh env_parallel.ksh
bin/env_parallel.ksh centos copy centos bin/env_parallel.ksh env_parallel.ksh bin/env_parallel.ksh centos copy centos bin/env_parallel.ksh env_parallel.ksh
@ -220,11 +232,13 @@ bin/env_parallel.mksh tru64 copy tru64 bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hpux-ia64 copy hpux-ia64 bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh hpux-ia64 copy hpux-ia64 bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh raspbian copy raspbian bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh raspbian copy raspbian bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh solaris copy solaris bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh solaris copy solaris bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh openindiana copy openindiana bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh aix copy aix bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh aix copy aix bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh hpux copy hpux bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh hpux copy hpux bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh suse copy suse bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh suse copy suse bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh solaris-x86 copy solaris-x86 bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh solaris-x86 copy solaris-x86 bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh mandriva copy mandriva bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh mandriva copy mandriva bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh ubuntu copy ubuntu bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh scosysv copy scosysv bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh scosysv copy scosysv bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh unixware copy unixware bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh unixware copy unixware bin/env_parallel.mksh env_parallel.mksh
bin/env_parallel.mksh centos copy centos bin/env_parallel.mksh env_parallel.mksh bin/env_parallel.mksh centos copy centos bin/env_parallel.mksh env_parallel.mksh
@ -244,11 +258,13 @@ bin/env_parallel.pdksh tru64 copy tru64 bin/env_parallel.pdksh env_parallel.pdks
bin/env_parallel.pdksh hpux-ia64 copy hpux-ia64 bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh hpux-ia64 copy hpux-ia64 bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh raspbian copy raspbian bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh raspbian copy raspbian bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh solaris copy solaris bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh solaris copy solaris bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh openindiana copy openindiana bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh aix copy aix bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh aix copy aix bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh hpux copy hpux bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh hpux copy hpux bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh suse copy suse bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh suse copy suse bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh solaris-x86 copy solaris-x86 bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh solaris-x86 copy solaris-x86 bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh mandriva copy mandriva bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh mandriva copy mandriva bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh ubuntu copy ubuntu bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh scosysv copy scosysv bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh scosysv copy scosysv bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh unixware copy unixware bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh unixware copy unixware bin/env_parallel.pdksh env_parallel.pdksh
bin/env_parallel.pdksh centos copy centos bin/env_parallel.pdksh env_parallel.pdksh bin/env_parallel.pdksh centos copy centos bin/env_parallel.pdksh env_parallel.pdksh
@ -268,11 +284,13 @@ bin/env_parallel.sh tru64 copy tru64 bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh hpux-ia64 copy hpux-ia64 bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh hpux-ia64 copy hpux-ia64 bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh raspbian copy raspbian bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh raspbian copy raspbian bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh solaris copy solaris bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh solaris copy solaris bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh openindiana copy openindiana bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh aix copy aix bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh aix copy aix bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh hpux copy hpux bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh hpux copy hpux bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh suse copy suse bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh suse copy suse bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh solaris-x86 copy solaris-x86 bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh solaris-x86 copy solaris-x86 bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh mandriva copy mandriva bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh mandriva copy mandriva bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh ubuntu copy ubuntu bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh scosysv copy scosysv bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh scosysv copy scosysv bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh unixware copy unixware bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh unixware copy unixware bin/env_parallel.sh env_parallel.sh
bin/env_parallel.sh centos copy centos bin/env_parallel.sh env_parallel.sh bin/env_parallel.sh centos copy centos bin/env_parallel.sh env_parallel.sh
@ -292,11 +310,13 @@ bin/env_parallel.tcsh tru64 copy tru64 bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh hpux-ia64 copy hpux-ia64 bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh hpux-ia64 copy hpux-ia64 bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh raspbian copy raspbian bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh raspbian copy raspbian bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh solaris copy solaris bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh solaris copy solaris bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh openindiana copy openindiana bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh aix copy aix bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh aix copy aix bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh hpux copy hpux bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh hpux copy hpux bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh suse copy suse bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh suse copy suse bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh solaris-x86 copy solaris-x86 bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh solaris-x86 copy solaris-x86 bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh mandriva copy mandriva bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh mandriva copy mandriva bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh ubuntu copy ubuntu bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh scosysv copy scosysv bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh scosysv copy scosysv bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh unixware copy unixware bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh unixware copy unixware bin/env_parallel.tcsh env_parallel.tcsh
bin/env_parallel.tcsh centos copy centos bin/env_parallel.tcsh env_parallel.tcsh bin/env_parallel.tcsh centos copy centos bin/env_parallel.tcsh env_parallel.tcsh
@ -316,11 +336,13 @@ bin/env_parallel.zsh tru64 copy tru64 bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh hpux-ia64 copy hpux-ia64 bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh hpux-ia64 copy hpux-ia64 bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh raspbian copy raspbian bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh raspbian copy raspbian bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh solaris copy solaris bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh solaris copy solaris bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh openindiana copy openindiana bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh aix copy aix bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh aix copy aix bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh hpux copy hpux bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh hpux copy hpux bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh suse copy suse bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh suse copy suse bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh solaris-x86 copy solaris-x86 bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh solaris-x86 copy solaris-x86 bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh mandriva copy mandriva bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh mandriva copy mandriva bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh ubuntu copy ubuntu bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh scosysv copy scosysv bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh scosysv copy scosysv bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh unixware copy unixware bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh unixware copy unixware bin/env_parallel.zsh env_parallel.zsh
bin/env_parallel.zsh centos copy centos bin/env_parallel.zsh env_parallel.zsh bin/env_parallel.zsh centos copy centos bin/env_parallel.zsh env_parallel.zsh
@ -340,11 +362,13 @@ bin/parcat tru64 copy tru64 bin/parcat parcat
bin/parcat hpux-ia64 copy hpux-ia64 bin/parcat parcat bin/parcat hpux-ia64 copy hpux-ia64 bin/parcat parcat
bin/parcat raspbian copy raspbian bin/parcat parcat bin/parcat raspbian copy raspbian bin/parcat parcat
bin/parcat solaris copy solaris bin/parcat parcat bin/parcat solaris copy solaris bin/parcat parcat
bin/parcat openindiana copy openindiana bin/parcat parcat
bin/parcat aix copy aix bin/parcat parcat bin/parcat aix copy aix bin/parcat parcat
bin/parcat hpux copy hpux bin/parcat parcat bin/parcat hpux copy hpux bin/parcat parcat
bin/parcat suse copy suse bin/parcat parcat bin/parcat suse copy suse bin/parcat parcat
bin/parcat solaris-x86 copy solaris-x86 bin/parcat parcat bin/parcat solaris-x86 copy solaris-x86 bin/parcat parcat
bin/parcat mandriva copy mandriva bin/parcat parcat bin/parcat mandriva copy mandriva bin/parcat parcat
bin/parcat ubuntu copy ubuntu bin/parcat parcat
bin/parcat scosysv copy scosysv bin/parcat parcat bin/parcat scosysv copy scosysv bin/parcat parcat
bin/parcat unixware copy unixware bin/parcat parcat bin/parcat unixware copy unixware bin/parcat parcat
bin/parcat centos copy centos bin/parcat parcat bin/parcat centos copy centos bin/parcat parcat
@ -364,11 +388,13 @@ bin/stdout tru64 copy tru64 bin/stdout stdout
bin/stdout hpux-ia64 copy hpux-ia64 bin/stdout stdout bin/stdout hpux-ia64 copy hpux-ia64 bin/stdout stdout
bin/stdout raspbian copy raspbian bin/stdout stdout bin/stdout raspbian copy raspbian bin/stdout stdout
bin/stdout solaris copy solaris bin/stdout stdout bin/stdout solaris copy solaris bin/stdout stdout
bin/stdout openindiana copy openindiana bin/stdout stdout
bin/stdout aix copy aix bin/stdout stdout bin/stdout aix copy aix bin/stdout stdout
bin/stdout hpux copy hpux bin/stdout stdout bin/stdout hpux copy hpux bin/stdout stdout
bin/stdout suse copy suse bin/stdout stdout bin/stdout suse copy suse bin/stdout stdout
bin/stdout solaris-x86 copy solaris-x86 bin/stdout stdout bin/stdout solaris-x86 copy solaris-x86 bin/stdout stdout
bin/stdout mandriva copy mandriva bin/stdout stdout bin/stdout mandriva copy mandriva bin/stdout stdout
bin/stdout ubuntu copy ubuntu bin/stdout stdout
bin/stdout scosysv copy scosysv bin/stdout stdout bin/stdout scosysv copy scosysv bin/stdout stdout
bin/stdout unixware copy unixware bin/stdout stdout bin/stdout unixware copy unixware bin/stdout stdout
bin/stdout centos copy centos bin/stdout stdout bin/stdout centos copy centos bin/stdout stdout
@ -381,7 +407,6 @@ bin/stdout freebsd copy freebsd bin/stdout stdout
bin/stdout debian copy debian bin/stdout stdout bin/stdout debian copy debian bin/stdout stdout
bin/stdout hurd copy hurd bin/stdout stdout bin/stdout hurd copy hurd bin/stdout stdout
bin/stdout minix copy minix bin/stdout stdout bin/stdout minix copy minix bin/stdout stdout
bin/stdout minix cat: stdout: no space left on device
Done copying Done copying
echo echo
@ -413,7 +438,7 @@ redhat Works on redhat.polarhome.com
scosysv Works on scosysv.polarhome.com scosysv Works on scosysv.polarhome.com
solaris Works on solaris solaris Works on solaris
solaris-x86 Works on solaris-x86 solaris-x86 Works on solaris-x86
sshminix minix Works on minix sshwithpass minix Works on minix
suse Works on suse suse Works on suse
tru64 Works on tru64.polarhome.com tru64 Works on tru64.polarhome.com
ubuntu Works on ubuntu ubuntu Works on ubuntu
@ -450,6 +475,8 @@ netbsd 1
netbsd 1 netbsd 1
openbsd 1 openbsd 1
openbsd 1 openbsd 1
openindiana 1
openindiana 1
pidora 1 pidora 1
pidora 1 pidora 1
qnx 1 qnx 1
@ -467,8 +494,8 @@ solaris
solaris 2 solaris 2
solaris-x86 solaris-x86
solaris-x86 1 solaris-x86 1
sshminix minix 1 sshwithpass minix 1
sshminix minix 1 sshwithpass minix 1
suse 1 suse 1
suse 1 suse 1
tru64 1 tru64 1
@ -520,8 +547,8 @@ solaris 2
solaris 2 solaris 2
solaris-x86 1 solaris-x86 1
solaris-x86 1 solaris-x86 1
sshminix minix 1 sshwithpass minix 1
sshminix minix 1 sshwithpass minix 1
suse 1 suse 1
suse 1 suse 1
tru64 1 tru64 1
@ -637,6 +664,8 @@ netbsd export: Command not found.
netbsd funcA: Command not found. netbsd funcA: Command not found.
openbsd test funcA openbsd test funcA
openbsd bash only A openbsd bash only A
openindiana test funcA
openindiana bash only A
pidora test funcA pidora test funcA
pidora bash only A pidora bash only A
qnx /bin/sh: syntax error: `(' unexpected qnx /bin/sh: syntax error: `(' unexpected
@ -650,11 +679,13 @@ solaris test funcA
solaris bash only A solaris bash only A
solaris-x86 test funcA solaris-x86 test funcA
solaris-x86 bash only A solaris-x86 bash only A
sshminix minix test funcA sshwithpass minix test funcA
suse test funcA suse test funcA
suse bash only A suse bash only A
tru64 test funcA tru64 test funcA
tru64 bash only A tru64 bash only A
ubuntu test funcA
ubuntu bash only A
unixware test funcA unixware test funcA
unixware UX:sh (/bin/sh): ERROR: source: Not found unixware UX:sh (/bin/sh): ERROR: source: Not found
unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 3: `(' unexpected unixware UX:sh (/bin/sh): ERROR: /bin/sh: Syntax error at line 3: `(' unexpected
@ -702,6 +733,8 @@ netbsd bash only B
netbsd /home/t/tange/setupenv: line 9: syntax error: unexpected end of file netbsd /home/t/tange/setupenv: line 9: syntax error: unexpected end of file
openbsd test funcB openbsd test funcB
openbsd bash only B openbsd bash only B
openindiana test funcB
openindiana bash only B
pidora test funcB pidora test funcB
pidora bash only B pidora bash only B
qnx test funcB qnx test funcB
@ -717,11 +750,13 @@ solaris test funcB
solaris bash only B solaris bash only B
solaris-x86 test funcB solaris-x86 test funcB
solaris-x86 bash only B solaris-x86 bash only B
sshminix minix test funcB sshwithpass minix test funcB
suse test funcB suse test funcB
suse bash only B suse bash only B
tru64 test funcB tru64 test funcB
tru64 bash only B tru64 bash only B
ubuntu test funcB
ubuntu bash only B
unixware test funcB unixware test funcB
unixware bash only B unixware bash only B
echo echo
@ -949,17 +984,17 @@ solaris-x86 /home/tange/.profile
solaris-x86 /home/tange/.cshrc solaris-x86 /home/tange/.cshrc
solaris-x86 /home/tange/.tcshrc solaris-x86 /home/tange/.tcshrc
solaris-x86 install-OK solaris-x86 install-OK
sshminix minix Installed env_parallel in: sshwithpass minix Installed env_parallel in:
sshminix minix /home/t/tange/.bashrc sshwithpass minix /home/t/tange/.bashrc
sshminix minix /home/t/tange/.shrc sshwithpass minix /home/t/tange/.shrc
sshminix minix /home/t/tange/.zshenv sshwithpass minix /home/t/tange/.zshenv
sshminix minix /home/t/tange/.config/fish/config.fish sshwithpass minix /home/t/tange/.config/fish/config.fish
sshminix minix /home/t/tange/.kshrc sshwithpass minix /home/t/tange/.kshrc
sshminix minix /home/t/tange/.mkshrc sshwithpass minix /home/t/tange/.mkshrc
sshminix minix /home/t/tange/.profile sshwithpass minix /home/t/tange/.profile
sshminix minix /home/t/tange/.cshrc sshwithpass minix /home/t/tange/.cshrc
sshminix minix /home/t/tange/.tcshrc sshwithpass minix /home/t/tange/.tcshrc
sshminix minix install-OK sshwithpass minix install-OK
suse Installed env_parallel in: suse Installed env_parallel in:
suse /home/t/tange/.bashrc suse /home/t/tange/.bashrc
suse /home/t/tange/.shrc suse /home/t/tange/.shrc
@ -1021,7 +1056,7 @@ redhat env_parallel run-OK
scosysv env_parallel run-OK scosysv env_parallel run-OK
solaris env_parallel run-OK solaris env_parallel run-OK
solaris-x86 env_parallel run-OK solaris-x86 env_parallel run-OK
sshminix minix env_parallel run-OK sshwithpass minix env_parallel run-OK
suse env_parallel run-OK suse env_parallel run-OK
tru64 env_parallel run-OK tru64 env_parallel run-OK
ubuntu env_parallel run-OK ubuntu env_parallel run-OK
@ -1049,7 +1084,7 @@ redhat reading from process substitution OK
scosysv reading from process substitution OK scosysv reading from process substitution OK
solaris reading from process substitution OK solaris reading from process substitution OK
solaris-x86 reading from process substitution OK solaris-x86 reading from process substitution OK
sshminix minix reading from process substitution OK sshwithpass minix reading from process substitution OK
suse reading from process substitution OK suse reading from process substitution OK
tru64 reading from process substitution OK tru64 reading from process substitution OK
ubuntu reading from process substitution OK ubuntu reading from process substitution OK
@ -1107,7 +1142,7 @@ solaris ### Test if empty command name in process list causes problems
solaris OK_with_empty_cmd solaris OK_with_empty_cmd
solaris-x86 ### Test if empty command name in process list causes problems solaris-x86 ### Test if empty command name in process list causes problems
solaris-x86 OK_with_empty_cmd solaris-x86 OK_with_empty_cmd
sshminix minix ### Test if empty command name in process list causes problems sshwithpass minix ### Test if empty command name in process list causes problems
suse ### Test if empty command name in process list causes problems suse ### Test if empty command name in process list causes problems
suse OK_with_empty_cmd suse OK_with_empty_cmd
tru64 ### Test if empty command name in process list causes problems tru64 ### Test if empty command name in process list causes problems
@ -1151,7 +1186,7 @@ redhat 1 2 1 2 3 1 2 3 4
scosysv 1 2 1 2 3 1 2 3 4 scosysv 1 2 1 2 3 1 2 3 4
solaris 1 2 1 2 3 1 2 3 4 solaris 1 2 1 2 3 1 2 3 4
solaris-x86 1 2 1 2 3 1 2 3 4 solaris-x86 1 2 1 2 3 1 2 3 4
sshminix minix 1 2 1 2 3 1 2 3 4 sshwithpass minix 1 2 1 2 3 1 2 3 4
suse 1 2 1 2 3 1 2 3 4 suse 1 2 1 2 3 1 2 3 4
tru64 1 2 1 2 3 1 2 3 4 tru64 1 2 1 2 3 1 2 3 4
ubuntu 1 2 1 2 3 1 2 3 4 ubuntu 1 2 1 2 3 1 2 3 4
@ -1186,7 +1221,7 @@ redhat 2 2 3 2 3 4
scosysv 2 2 3 2 3 4 scosysv 2 2 3 2 3 4
solaris 1 2 1 2 1 2 solaris 1 2 1 2 1 2
solaris-x86 2 2 3 2 3 4 solaris-x86 2 2 3 2 3 4
sshminix minix 2 2 3 2 3 4 sshwithpass minix 2 2 3 2 3 4
suse 2 2 3 2 3 4 suse 2 2 3 2 3 4
tru64 2 2 3 2 3 4 tru64 2 2 3 2 3 4
ubuntu 2 2 3 2 3 4 ubuntu 2 2 3 2 3 4
@ -1228,7 +1263,7 @@ redhat 1 2,1 2 3,1 2 3 4
scosysv 1 2,1 2 3,1 2 3 4 scosysv 1 2,1 2 3,1 2 3 4
solaris 1 2,1 2 3,1 2 3 4 solaris 1 2,1 2 3,1 2 3 4
solaris-x86 1 2,1 2 3,1 2 3 4 solaris-x86 1 2,1 2 3,1 2 3 4
sshminix minix 1 2,1 2 3,1 2 3 4 sshwithpass minix 1 2,1 2 3,1 2 3 4
suse 1 2,1 2 3,1 2 3 4 suse 1 2,1 2 3,1 2 3 4
tru64 1 2,1 2 3,1 2 3 4 tru64 1 2,1 2 3,1 2 3 4
ubuntu 1 2,1 2 3,1 2 3 4 ubuntu 1 2,1 2 3,1 2 3 4
@ -1263,7 +1298,7 @@ redhat 2,2 3,2 3 4
scosysv 2,2 3,2 3 4 scosysv 2,2 3,2 3 4
solaris 1 2,1 2,1 2 solaris 1 2,1 2,1 2
solaris-x86 2,2 3,2 3 4 solaris-x86 2,2 3,2 3 4
sshminix minix 2,2 3,2 3 4 sshwithpass minix 2,2 3,2 3 4
suse 2,2 3,2 3 4 suse 2,2 3,2 3 4
tru64 2,2 3,2 3 4 tru64 2,2 3,2 3 4
ubuntu 2,2 3,2 3 4 ubuntu 2,2 3,2 3 4

View file

@ -150,9 +150,9 @@ B
(echo 1; echo; echo 2) | parallel --no-run-if-empty echo (echo 1; echo; echo 2) | parallel --no-run-if-empty echo
9 9
parallel ::: ls 'echo foo' pwd parallel ::: ls 'echo foo' pwd
abc-file
abc0-file abc0-file
abc_-file abc_-file
abc-file
def-file def-file
fixedlen fixedlen
num1000000 num1000000
@ -389,12 +389,12 @@ pre-A-post
=ls =ls
parallel 'set a="{}"; if( { test -d "$a" } ) echo "$a is a dir"' ::: * parallel 'set a="{}"; if( { test -d "$a" } ) echo "$a is a dir"' ::: *
/bin/bash: -c: line 0: syntax error near unexpected token `)' /bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="abc-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="abc0-file"; if( { test -d "$a" } ) echo "$a is a dir"' /bin/bash: -c: line 0: `set a="abc0-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)' /bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="abc_-file"; if( { test -d "$a" } ) echo "$a is a dir"' /bin/bash: -c: line 0: `set a="abc_-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)' /bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="abc-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="def-file"; if( { test -d "$a" } ) echo "$a is a dir"' /bin/bash: -c: line 0: `set a="def-file"; if( { test -d "$a" } ) echo "$a is a dir"'
/bin/bash: -c: line 0: syntax error near unexpected token `)' /bin/bash: -c: line 0: syntax error near unexpected token `)'
/bin/bash: -c: line 0: `set a="fixedlen"; if( { test -d "$a" } ) echo "$a is a dir"' /bin/bash: -c: line 0: `set a="fixedlen"; if( { test -d "$a" } ) echo "$a is a dir"'
@ -574,7 +574,6 @@ Computer:jobs running/jobs completed/%of started jobs/Average seconds to complet
seq 1000 | parallel -j10 --bar '(echo -n {};sleep 0.1)' \ seq 1000 | parallel -j10 --bar '(echo -n {};sleep 0.1)' \
2> >(zenity --timeout=15 --progress --auto-kill --auto-close) 2> >(zenity --timeout=15 --progress --auto-kill --auto-close)
BASE64-Message: GtkDialog mapped without a transient parent. This is discouraged.
parallel --joblog /tmp/log exit ::: 1 2 3 0 parallel --joblog /tmp/log exit ::: 1 2 3 0
cat /tmp/log; cat /tmp/log;
parallel --joblog /tmp/log exit ::: 1 2 3 0 parallel --joblog /tmp/log exit ::: 1 2 3 0
@ -826,9 +825,11 @@ foo bar baz
in my_func baz in my_func baz
parallel --record-env parallel --record-env
cat ~/.parallel/ignored_vars|sort cat ~/.parallel/ignored_vars|sort
_
BASH_FUNC_run_once%% BASH_FUNC_run_once%%
BASH_FUNC_run_test%% BASH_FUNC_run_test%%
COLORFGBG COLORFGBG
COLORTERM
DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_ADDRESS
DEBEMAIL DEBEMAIL
DEBFULLNAME DEBFULLNAME
@ -845,7 +846,6 @@ HOME
JAVA_HOME JAVA_HOME
JDK_HOME JDK_HOME
KDE_FULL_SESSION KDE_FULL_SESSION
KDE_MULTIHEAD
KDE_SESSION_UID KDE_SESSION_UID
KDE_SESSION_VERSION KDE_SESSION_VERSION
KONSOLE_DBUS_SERVICE KONSOLE_DBUS_SERVICE
@ -867,6 +867,7 @@ MAKE_TERMERR
MAKE_TERMOUT MAKE_TERMOUT
MANDATORY_PATH MANDATORY_PATH
MFLAGS MFLAGS
OLDPWD
ORACLE_HOME ORACLE_HOME
ORACLE_SID ORACLE_SID
PARALLEL PARALLEL
@ -881,8 +882,8 @@ PERL_MM_OPT
PROFILEHOME PROFILEHOME
PWD PWD
QT_ACCESSIBILITY QT_ACCESSIBILITY
QT_IM_MODULE QT_AUTO_SCREEN_SCALE_FACTOR
QT_LINUX_ACCESSIBILITY_ALWAYS_ON S_COLORS
SERVER1 SERVER1
SERVER2 SERVER2
SESSION_MANAGER SESSION_MANAGER
@ -913,7 +914,6 @@ XDG_SESSION_ID
XDG_SESSION_PATH XDG_SESSION_PATH
XDG_SESSION_TYPE XDG_SESSION_TYPE
XDG_VTNR XDG_VTNR
_
# The function is only copied if using Bash # The function is only copied if using Bash
my_func2() { my_func2() {
echo in my_func2 $VAR $1 echo in my_func2 $VAR $1
@ -1304,20 +1304,17 @@ cat: num_%header: No such file or directory
/bin/bash: line 1: foo: command not found /bin/bash: line 1: foo: command not found
#!/usr/bin/perl #!/usr/bin/perl
print "@ARGV\n" print "@ARGV\n"
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/print line 528.
Error: no such file "@ARGV\n" Error: no such file "@ARGV\n"
parallel perl_echo ::: foo bar parallel perl_echo ::: foo bar
/bin/bash: perl_echo: command not found /bin/bash: perl_echo: command not found
#!/usr/bin/parallel --shebang-wrap /usr/bin/perl #!/usr/bin/parallel --shebang-wrap /usr/bin/perl
print "@ARGV\n" print "@ARGV\n"
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/print line 528.
Error: no such file "@ARGV\n" Error: no such file "@ARGV\n"
perl_echo foo bar perl_echo foo bar
/bin/bash: perl_echo: command not found /bin/bash: perl_echo: command not found
#!/usr/bin/parallel --shebang-wrap /usr/bin/perl #!/usr/bin/parallel --shebang-wrap /usr/bin/perl
print "Arguments @ARGV\n"; print "Arguments @ARGV\n";
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/print line 528.
Error: no such file "Arguments @ARGV\n" Error: no such file "Arguments @ARGV\n"
#!/usr/bin/parallel --shebang-wrap /usr/bin/python #!/usr/bin/parallel --shebang-wrap /usr/bin/python
@ -1351,7 +1348,6 @@ Arguments
print "Arguments " print "Arguments "
puts ARGV puts ARGV
Unescaped left brace in regex is deprecated, passed through in regex; marked by <-- HERE in m/%{ <-- HERE (.*?)}/ at /usr/bin/print line 528.
Error: no such file "Arguments " Error: no such file "Arguments "
/bin/bash: line 3: puts: command not found /bin/bash: line 3: puts: command not found
#!/usr/bin/parallel --shebang-wrap /usr/bin/octave #!/usr/bin/parallel --shebang-wrap /usr/bin/octave
@ -1425,6 +1421,7 @@ The second finished running in the foreground
First started First started
First done First done
sem --id my_id -u 'echo Second started; sleep 10; echo Second done' sem --id my_id -u 'echo Second started; sleep 10; echo Second done'
Second done
sem --jobs 3 --id my_id -u 'echo Start 1; sleep 5; echo 1 done' && sem --jobs 3 --id my_id -u 'echo Start 1; sleep 5; echo 1 done' &&
sem --jobs 3 --id my_id -u 'echo Start 2; sleep 6; echo 2 done' && sem --jobs 3 --id my_id -u 'echo Start 2; sleep 6; echo 2 done' &&
sem --jobs 3 --id my_id -u 'echo Start 3; sleep 7; echo 3 done' && sem --jobs 3 --id my_id -u 'echo Start 3; sleep 7; echo 3 done' &&
@ -1445,8 +1442,8 @@ Start 4
Slow started Slow started
Forced running after 1 sec Forced running after 1 sec
Slow ended Slow ended
Give up after 2 secs
parallel: Warning: Semaphore timed out. Stealing the semaphore. parallel: Warning: Semaphore timed out. Stealing the semaphore.
parallel: Warning: Semaphore timed out. Exiting.
parallel --help parallel --help
Usage: Usage:
@ -1541,4 +1538,4 @@ C
echo A echo A
echo B echo B
echo C echo C
8 7

View file

@ -21,26 +21,6 @@ echo '### Test mutex. This should not mix output'; parallel --semaphore --id m
19 19
20 20
done done
echo '### Test semaphore 2 jobs running simultaneously'
### Test semaphore 2 jobs running simultaneously
parallel --semaphore --id 2jobs -u -j2 'echo job1a 1; sleep 1; echo job1b 3'; sleep 0.2; parallel --semaphore --id 2jobs -u -j2 'echo job2a 2; sleep 1; echo job2b 5'; sleep 0.2; parallel --semaphore --id 2jobs -u -j2 'echo job3a 4; sleep 1; echo job3b 6'; parallel --semaphore --id 2jobs --wait; echo done
job1a 1
job2a 2
job1b 3
job3a 4
job2b 5
job3b 6
done
echo '### Test if parallel invoked as sem will run parallel --semaphore'
### Test if parallel invoked as sem will run parallel --semaphore
sem --id as_sem -u -j2 'echo job1a 1; sleep 1; echo job1b 3'; sleep 0.2; sem --id as_sem -u -j2 'echo job2a 2; sleep 1; echo job2b 5'; sleep 0.2; sem --id as_sem -u -j2 'echo job3a 4; sleep 1; echo job3b 6'; sem --id as_sem --wait; echo done
job1a 1
job2a 2
job1b 3
job3a 4
job2b 5
job3b 6
done
echo '### Test similar example as from man page - run 2 jobs simultaneously' echo '### Test similar example as from man page - run 2 jobs simultaneously'
### Test similar example as from man page - run 2 jobs simultaneously ### Test similar example as from man page - run 2 jobs simultaneously
echo 'Expect done: 1 2 5 3 4' echo 'Expect done: 1 2 5 3 4'

View file

@ -37,7 +37,7 @@ bytes
3072 3072
Current command: sqlite3 Current command: sqlite3
foo foo
sqltest.sqlite3: SQLite 3.x database sqltest.sqlite3: SQLite 3.x database, last written using SQLite version 3022000
n|t n|t
1|Line 1 1|Line 1
2|Line 2 2|Line 2
@ -70,6 +70,6 @@ n t
<TD>Line 2</TD> <TD>Line 2</TD>
</TR> </TR>
bytes bytes
2048 8192
bytes bytes
2048 8192

View file

@ -76,11 +76,11 @@ ls: tmp/parallel.file*: No such file or directory
OK OK
Input for ssh Input for ssh
-l parallel one-server -- mkdir -p ./. -l parallel one-server -- mkdir -p ./.
-l parallel one-server rsync --server -lDrRze.iLsfx . ./. -l parallel one-server rsync --server -lDrRze.iLsfxC . ./.
-l parallel one-server -- exec perl -e '@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;' base64 -l parallel one-server -- exec perl -e '@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;' base64
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . './parallel.file. -l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfxC . './parallel.file.
newlineX.out' newlineX.out'
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . './parallel.file. -l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfxC . './parallel.file.
newlineX.out2' newlineX.out2'
-l parallel one-server -- rm -f './tmp/parallel.file. -l parallel one-server -- rm -f './tmp/parallel.file.
newlineX'; sh -c 'rmdir ./tmp/ ./ 2>/dev/null;' newlineX'; sh -c 'rmdir ./tmp/ ./ 2>/dev/null;'
@ -89,11 +89,11 @@ newlineX.out'; sh -c 'rmdir ./tmp/ ./ 2>/dev/null;'
-l parallel one-server -- rm -f './tmp/parallel.file. -l parallel one-server -- rm -f './tmp/parallel.file.
newlineX.out2'; sh -c 'rmdir ./tmp/ ./ 2>/dev/null;' newlineX.out2'; sh -c 'rmdir ./tmp/ ./ 2>/dev/null;'
-l parallel one-server -- mkdir -p ./. -l parallel one-server -- mkdir -p ./.
-l parallel one-server rsync --server -lDrRze.iLsfx . ./. -l parallel one-server rsync --server -lDrRze.iLsfxC . ./.
-l parallel one-server -- exec perl -e '@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;' base64 -l parallel one-server -- exec perl -e '@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;' base64
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . './parallel.file. -l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfxC . './parallel.file.
newlineX.out' newlineX.out'
-l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfx . './parallel.file. -l parallel one-server cd ././tmp; rsync --server --sender -lDrRze.iLsfxC . './parallel.file.
newlineX.out2' newlineX.out2'
-l parallel one-server -- rm -f './tmp/parallel.file. -l parallel one-server -- rm -f './tmp/parallel.file.
newlineX'; sh -c 'rmdir ./tmp/ ./ 2>/dev/null;' newlineX'; sh -c 'rmdir ./tmp/ ./ 2>/dev/null;'

View file

@ -19,30 +19,30 @@ ls: script2: No such file or directory
OK OK
### Test --basefile + --sshlogin : ### Test --basefile + --sshlogin :
1 1
10
11
12
13
2
3
4
5
6
7
8
9
1 1
10 10
10
11
11 11
12 12
12
13
13 13
2 2
2
3
3 3
4 4
4
5
5 5
6 6
6
7
7 7
8 8
8
9
9 9
### Here we ought to test -m --return {/}_{/.}_{#/.}_{#/}_{#.} with files containing space ### Here we ought to test -m --return {/}_{/.}_{#/.}_{#/}_{#.} with files containing space
### But we will wait for a real world scenario ### But we will wait for a real world scenario