Unittest for --interactive. Added --eta. Updated to version 20100620.

This commit is contained in:
Ole Tange 2010-06-22 15:24:55 +02:00
parent c81a15677d
commit a0f4c5e4d9
34 changed files with 235 additions and 2382 deletions

View file

@ -1,6 +1,6 @@
@%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.65 for parallel 20100616.
@%:@ Generated by GNU Autoconf 2.65 for parallel 20100620.
@%:@
@%:@ Report bugs to <bug-parallel@gnu.org>.
@%:@
@ -551,8 +551,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20100616'
PACKAGE_STRING='parallel 20100616'
PACKAGE_VERSION='20100620'
PACKAGE_STRING='parallel 20100620'
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL=''
@ -1167,7 +1167,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures parallel 20100616 to adapt to many kinds of systems.
\`configure' configures parallel 20100620 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1233,7 +1233,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20100616:";;
short | recursive ) echo "Configuration of parallel 20100620:";;
esac
cat <<\_ACEOF
@ -1300,7 +1300,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
parallel configure 20100616
parallel configure 20100620
generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc.
@ -1317,7 +1317,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20100616, which was
It was created by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@
@ -2125,7 +2125,7 @@ fi
# Define the identity of the package.
PACKAGE='parallel'
VERSION='20100616'
VERSION='20100620'
cat >>confdefs.h <<_ACEOF
@ -2675,7 +2675,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by parallel $as_me 20100616, which was
This file was extended by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -2737,7 +2737,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
parallel config.status 20100616
parallel config.status 20100620
configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\"

View file

@ -1,6 +1,6 @@
@%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.65 for parallel 20100616.
@%:@ Generated by GNU Autoconf 2.65 for parallel 20100620.
@%:@
@%:@ Report bugs to <bug-parallel@gnu.org>.
@%:@
@ -551,8 +551,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20100616'
PACKAGE_STRING='parallel 20100616'
PACKAGE_VERSION='20100620'
PACKAGE_STRING='parallel 20100620'
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL=''
@ -1167,7 +1167,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures parallel 20100616 to adapt to many kinds of systems.
\`configure' configures parallel 20100620 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1233,7 +1233,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20100616:";;
short | recursive ) echo "Configuration of parallel 20100620:";;
esac
cat <<\_ACEOF
@ -1300,7 +1300,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
parallel configure 20100616
parallel configure 20100620
generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc.
@ -1317,7 +1317,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20100616, which was
It was created by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@
@ -2125,7 +2125,7 @@ fi
# Define the identity of the package.
PACKAGE='parallel'
VERSION='20100616'
VERSION='20100620'
cat >>confdefs.h <<_ACEOF
@ -2675,7 +2675,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by parallel $as_me 20100616, which was
This file was extended by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -2737,7 +2737,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
parallel config.status 20100616
parallel config.status 20100620
configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
m4trace:configure.ac:1: -1- AC_INIT([parallel], [20100616], [bug-parallel@gnu.org])
m4trace:configure.ac:1: -1- AC_INIT([parallel], [20100620], [bug-parallel@gnu.org])
m4trace:configure.ac:1: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.ac:1: -1- m4_pattern_forbid([_AC_])
m4trace:configure.ac:1: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])

20
configure vendored
View file

@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.65 for parallel 20100616.
# Generated by GNU Autoconf 2.65 for parallel 20100620.
#
# Report bugs to <bug-parallel@gnu.org>.
#
@ -551,8 +551,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='parallel'
PACKAGE_TARNAME='parallel'
PACKAGE_VERSION='20100616'
PACKAGE_STRING='parallel 20100616'
PACKAGE_VERSION='20100620'
PACKAGE_STRING='parallel 20100620'
PACKAGE_BUGREPORT='bug-parallel@gnu.org'
PACKAGE_URL=''
@ -1167,7 +1167,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures parallel 20100616 to adapt to many kinds of systems.
\`configure' configures parallel 20100620 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1233,7 +1233,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of parallel 20100616:";;
short | recursive ) echo "Configuration of parallel 20100620:";;
esac
cat <<\_ACEOF
@ -1300,7 +1300,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
parallel configure 20100616
parallel configure 20100620
generated by GNU Autoconf 2.65
Copyright (C) 2009 Free Software Foundation, Inc.
@ -1317,7 +1317,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by parallel $as_me 20100616, which was
It was created by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was
$ $0 $@
@ -2125,7 +2125,7 @@ fi
# Define the identity of the package.
PACKAGE='parallel'
VERSION='20100616'
VERSION='20100620'
cat >>confdefs.h <<_ACEOF
@ -2675,7 +2675,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by parallel $as_me 20100616, which was
This file was extended by parallel $as_me 20100620, which was
generated by GNU Autoconf 2.65. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@ -2737,7 +2737,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
parallel config.status 20100616
parallel config.status 20100620
configured by $0, generated by GNU Autoconf 2.65,
with options \\"\$ac_cs_config\\"

View file

@ -1,4 +1,4 @@
AC_INIT([parallel], [20100616], [bug-parallel@gnu.org])
AC_INIT([parallel], [20100620], [bug-parallel@gnu.org])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([

View file

@ -1,6 +1,20 @@
Some systems does not receive the SIGCHLD (maybe when running under
dash?).
Unittest failed if /bin/sh was dash.
# BUG: bash -c 'parallel -a <(seq 1 3) -p echo'
# Hvordan udregnes system limits på remote systems hvis jeg ikke ved, hvormange
# argumenter, der er? Lav system limits lokalt og lad det være max
# TODO max_line_length on remote
# TODO compute how many can be transferred within max_line_length
# TODO Unittest with filename that is long and requires a lot of quoting. Will there be to many
# TODO --max-number-of-jobs print the system limited number of jobs
# TODO Debian package
# TODO to kill from a run script parallel should set PARALLEL_PID that can be sig termed
# TAGS: parallel | parallel processing | multicore | multiprocessor | Clustering/Distributed Networks
# job control | multiple jobs | parallelization | text processing | cluster | filters
# Clustering Tools | Command Line Tools | Utilities | System Administration
# Bash parallel
* 100% options complete with xargs. All options for xargs can now
be used in GNU Parallel - even the more exotic.
@ -14,6 +28,8 @@ Unittest failed if /bin/sh was dash.
server use --progress. It can be turned on even after GNU Parallel
is started.
* --eta shows estimated time left in seconds.
* --halt-on-error stops if an error occurs. GNU Parallel will default
to run all jobs - even if some of them fail. With --halt-on-error
GNU Parallel can ignore errors, wait for the currently running jobs
@ -44,24 +60,29 @@ rm -rf dirs/*
rm -rf parallel-*bz2
xvidcap
ffmpeg -i 20100615_002.mp4 -ab 320k -ar 44100 speak.mp3
ffmpeg -i 20100616_002.mp4 -ab 320k -ar 44100 speak.mp3
# Merge video using youtube
#ffmpeg -i speak.mp3 -i xvidcap.mpeg -target mpeg -hq -minrate 8000000 \
#-title "GNU Parallel" -author "Ole Tange" -copyright "(CC-By-SA) 2010" -comment "Intro video of GNU Parallel 20100615" videoaudio.mpg
#-title "GNU Parallel" -author "Ole Tange" -copyright "(CC-By-SA) 2010" -comment "Intro video of GNU Parallel 20100616" videoaudio.mpg
# GNU PARALLEL - BASIC USAGE
# A GNU tool for parallelizing shell commands
## Ole Tange Author
# GET GNU PARALLEL
wget ftp://ftp.gnu.org/gnu/parallel/parallel-20100615.tar.bz2
tar xjf parallel-20100615.tar.bz2
cd parallel-20100615
wget ftp://ftp.gnu.org/gnu/parallel/parallel-20100620.tar.bz2
tar xjf parallel-20100620.tar.bz2
cd parallel-20100620
./configure && make ##
su
make install
exit
cd
## scp /usr/local/bin/parallel root@parallel:/usr/local/bin/
# YOUR FIRST PARALLEL JOBS
cd logs
du
@ -76,26 +97,26 @@ ls | time parallel gunzip
# RECOMPRESS gz TO bz2
ls | time parallel gzip -1
ls *.gz | time parallel -j+0 --progress 'zcat {} | bzip2 -1 > {.}.bz2'
ls *.gz | time parallel -j+0 --eta 'zcat {} | bzip2 -9 >{.}.bz2'
## Explain command line
## vis top local
## Man that is boring
## 2m41s - 2m
## 2m41s - 2m - 3m35s
# RECOMPRESS gz TO bz2 USING local(:) AND REMOTE server1-3
ls *.gz |time parallel -j+0 --progress -Sserver1,server2,server3,: \
--transfer --return {.}.bz2 --cleanup 'zcat {} | bzip2 -1 > {.}.bz2'
# RECOMPRESS gz TO bz2 USING local(:) AND REMOTE server1-4
ls *.gz |time parallel -j+0 --eta -Sserver1,server2,server3,server4,: \
--transfer --return {.}.bz2 --cleanup 'zcat {} | bzip2 -9 > {.}.bz2'
## Explain command line
## Explain server config
## vis top local
## vis top remote1-3
## 49 sek
# RECOMPRESS gz TO bz2 USING A SCRIPT ON local AND REMOTE server1-3
# RECOMPRESS gz TO bz2 USING A SCRIPT ON local AND REMOTE server1-2,4
# (imagine the script is way more complex)
cp ../recompress /tmp
cat /tmp/recompress
ls *.gz |time parallel -j+0 --progress -Sserver1,server2,server3,: \
ls *.gz |time parallel -j+0 --progress -Sserver1,server2,server4,: \
--trc {.}.bz2 --basefile /tmp/recompress '/tmp/recompress {} {.}.bz2'
@ -123,7 +144,7 @@ seq 1 255 | parallel -j0 ping -c 1 178.63.11.{} 2>&1 \
| grep '64 bytes' | wc -l
# MULTIPLE ARGUMENTS
# make dir: test-(1-20000).dir
# make dir: test-(1-5000).dir
cd ../dirs
rm -rf *; sync
seq 1 10 | parallel echo mkdir test-{}.dir
@ -175,6 +196,12 @@ Test if -0 works on filenames ending in '\n'
If there are nomore jobs (STDIN is eof) then make sure to
distribute the arguments evenly if running -X.
=head1 search terms
GNU parallel execution shell bash script simultaneous concurrent linux
scripting run xargs ppss code.google.com/p/ppss/
=head1 options
One char options not used: F G J K P Q Y

View file

@ -79,7 +79,7 @@ download at: http://ftp.gnu.org/gnu/parallel/
New in this release:
* GNU Parallel now has support for running jobs on remote machines
* GNU Parallel now has progress indicator
= About GNU Parallel =

View file

@ -37,7 +37,7 @@ after the list of options. That will give you an idea of what GNU
B<parallel> is capable of.
You can also watch the intro video for a quick introduction:
http://www.youtube.com/watch?v=LlXDtd_pRaY
http://www.youtube.com/watch?v=OpaiGYxkSuQ
=head1 OPTIONS
@ -164,6 +164,14 @@ If I<eof-str> is omitted, there is no end of file string. If neither
B<-E> nor B<-e> is used, no end of file string is used.
=item B<--eta> (beta testing)
Show the estimated number of seconds before finishing. This forces GNU
B<parallel> to read all jobs before starting to find the number of
jobs. GNU B<parallel> normally only reads the next job to run.
Implies B<--progress>.
=item B<--file>
=item B<-f>
@ -1603,7 +1611,7 @@ if($::opt_halt_on_error) {
sub parse_options {
# Defaults:
$Global::version = 20100616;
$Global::version = 20100620;
$Global::progname = 'parallel';
$Global::debug = 0;
$Global::verbose = 0;
@ -1620,6 +1628,8 @@ sub parse_options {
$Global::default_simultaneous_sshlogins = 9;
$Global::exitstatus = 0;
$Global::halt_on_error_exitstatus = 0;
$Global::total_jobs = 0;
$Global::eta = 0;
Getopt::Long::Configure ("bundling","require_order");
# Add options from .parallelrc
@ -1664,6 +1674,7 @@ sub parse_options {
"basefile|B=s" => \@::opt_basefile,
"halt-on-error|H=s" => \$::opt_halt_on_error,
"progress" => \$::opt_progress,
"eta" => \$::opt_eta,
# xargs-compatibility - implemented, man, unittest
"max-procs|P=s" => \$::opt_P,
"delimiter|d=s" => \$::opt_d,
@ -1677,13 +1688,11 @@ sub parse_options {
"help|h" => \$::opt_help,
"L=i" => \$::opt_L,
"max-lines|l:i" => \$::opt_l,
"interactive|p" => \$::opt_p,
"verbose|t" => \$::opt_verbose,
"version|V" => \$::opt_version,
"show-limits" => \$::opt_show_limits,
"exit|x" => \$::opt_x,
## xargs-compatibility - implemented, man - unittest missing
"interactive|p" => \$::opt_p,
## How to unittest? tty must be emulated
) || die_usage();
$Global::debug = (defined $::opt_D);
$Global::input_is_filename = (@ARGV);
@ -1735,6 +1744,16 @@ sub parse_options {
}
$Global::argfile = *ARGFILE;
}
if(defined $::opt_eta) {
# must be done after opt_a
$::opt_progress = $::opt_eta;
my @args = ();
while(not eof $Global::argfile) {
# This will read all arguments and compute $Global::total_jobs
push @args, get_next_arg();
}
unget_arg(@args);
}
if(@ARGV) {
if($Global::quoting) {
@ -2507,6 +2526,7 @@ sub get_next_arg {
if($Global::input_is_filename) {
$arg = shell_quote($arg);
}
$Global::total_jobs++;
}
debug("Next arg: !".$arg."!\n");
return $arg;
@ -2518,7 +2538,9 @@ sub unget_arg {
sub drain_job_queue {
if($::opt_progress) {
DoNotReap();
print init_progress();
ReapIfNeeded();
}
my $last_header="";
while($Global::total_running > 0) {
@ -2527,11 +2549,13 @@ sub drain_job_queue {
Reaper(); # Some systems fail to catch the SIGCHLD
if($::opt_progress) {
my %progress = progress();
DoNotReap();
if($last_header ne $progress{'header'}) {
print "\n",$progress{'header'},"\n";
$last_header = $progress{'header'};
}
print "\r",$progress{'status'};
ReapIfNeeded();
}
}
if($::opt_progress) {
@ -2566,33 +2590,92 @@ sub progress {
($Global::host{$_}{'ncpus'} || "-") ." / ".
$Global::host{$_}{'max_no_of_running'}
} @workers);
if(eof $Global::argfile) {
my $eta = "";
if($::opt_eta) {
my $completed = 0;
for(@workers) { $completed += ($Global::host{$_}{'completed'}||0) }
if($completed) {
$Global::first_completed ||= time;
my $avgtime = (time-$Global::first_completed)/$completed;
my $this_eta = ($Global::total_jobs - $completed) * $avgtime;
$Global::eta ||= $this_eta;
# Smooth the eta so it does not jump wildly
$Global::eta = 0.9 * $Global::eta + 0.1 * $this_eta;
$eta = sprintf("ETA: %ds ", $Global::eta);
}
}
if(length $status > $termcols) {
# sshlogin1:XX/XX/XX%/XX.Xs sshlogin2:XX/XX/XX%/XX.Xs sshlogin3:XX/XX/XX%/XX.Xs
$header = "Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete";
$status = $eta .
join(" ",map
{
my $completed = ($Global::host{$_}{'completed'}||0);
my $running = $Global::host{$_}{'no_of_running'};
my $time = $completed ? (time-$^T)/($completed) : "0";
sprintf("%s:%d/%d/%d%%/%.1fs ",
$sshlogin{$_}, $running, $completed,
($running+$completed)*100
/ $Global::total_started, $time);
} @workers);
}
if(length $status > $termcols) {
# 1:XX/XX/XX%/XX.Xs 2:XX/XX/XX%/XX.Xs 3:XX/XX/XX%/XX.Xs 4:XX/XX/XX%/XX.Xs
$header = "Computer:jobs running/jobs completed/%of started jobs";
$status = $eta .
join(" ",map
{
my $completed = ($Global::host{$_}{'completed'}||0);
my $running = $Global::host{$_}{'no_of_running'};
my $time = $completed ? (time-$^T)/($completed) : "0";
sprintf("%s:%d/%d/%d%%/%.1fs ",
$workerno{$_}, $running, $completed,
($running+$completed)*100
/ $Global::total_started, $time);
} @workers);
}
if(length $status > $termcols) {
# sshlogin1:XX/XX/XX% sshlogin2:XX/XX/XX% sshlogin3:XX/XX/XX%
$header = "Computer:jobs running/jobs completed/%completed of all jobs";
$status = join(" ",map
$header = "Computer:jobs running/jobs completed/%of started jobs";
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d/%d%%",
$sshlogin{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0),
($Global::host{$_}{'completed'}||0)*100
/ $Global::total_started) }
@workers);
if(length $status > $termcols) {
# 1:XX/XX/XX% 2:XX/XX/XX% 3:XX/XX/XX% 4:XX/XX/XX% 5:XX/XX/XX% 6:XX/XX/XX%
$header = "Computer:jobs running/jobs completed/%completed of all jobs";
$status = join(" ",map
{ sprintf("%s:%d/%d/%d%%",
$workerno{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0),
($Global::host{$_}{'completed'}||0)*100
($Global::host{$_}{'no_of_running'}+
($Global::host{$_}{'completed'}||0))*100
/ $Global::total_started) }
@workers);
}
if(length $status > $termcols) {
# 1:XX/XX/XX% 2:XX/XX/XX% 3:XX/XX/XX% 4:XX/XX/XX% 5:XX/XX/XX% 6:XX/XX/XX%
$header = "Computer:jobs running/jobs completed/%of started jobs";
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d/%d%%",
$workerno{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0),
($Global::host{$_}{'no_of_running'}+
($Global::host{$_}{'completed'}||0))*100
/ $Global::total_started) }
@workers);
}
if(length $status > $termcols) {
# sshlogin1:XX/XX/XX% sshlogin2:XX/XX/XX% sshlogin3:XX/XX sshlogin4:XX/XX
$header = "Computer:jobs running/jobs completed";
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d",
$sshlogin{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0)) }
@workers);
}
if(length $status > $termcols) {
# sshlogin1:XX/XX sshlogin2:XX/XX sshlogin3:XX/XX sshlogin4:XX/XX
$header = "Computer:jobs running/jobs completed";
$status = join(" ",map
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d",
$sshlogin{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0)) }
@ -2601,7 +2684,8 @@ sub progress {
if(length $status > $termcols) {
# 1:XX/XX 2:XX/XX 3:XX/XX 4:XX/XX 5:XX/XX 6:XX/XX
$header = "Computer:jobs running/jobs completed";
$status = join(" ",map
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d",
$workerno{$_}, $Global::host{$_}{'no_of_running'},
($Global::host{$_}{'completed'}||0)) }
@ -2610,7 +2694,8 @@ sub progress {
if(length $status > $termcols) {
# sshlogin1:XX sshlogin2:XX sshlogin3:XX sshlogin4:XX sshlogin5:XX
$header = "Computer:jobs completed";
$status = join(" ",map
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d",
$sshlogin{$_},
($Global::host{$_}{'completed'}||0)) }
@ -2619,7 +2704,8 @@ sub progress {
if(length $status > $termcols) {
# 1:XX 2:XX 3:XX 4:XX 5:XX 6:XX
$header = "Computer:jobs completed";
$status = join(" ",map
$status = $eta .
join(" ",map
{ sprintf("%s:%d/%d",
$workerno{$_},
($Global::host{$_}{'completed'}||0)) }
@ -3219,18 +3305,3 @@ $main::opt_show_limits = $main::opt_n = $main::opt_e = $main::opt_verbose =
$main::opt_E = $main::opt_r = $Global::xargs = $Global::keeporder =
$Global::control_path = 0;
# Hvordan udregnes system limits på remote systems hvis jeg ikke ved, hvormange
# argumenter, der er? Lav system limits lokalt og lad det være max
# TODO max_line_length on remote
# TODO compute how many can be transferred within max_line_length
# TODO Unittest with filename that is long and requires a lot of quoting. Will there be to many
# TODO --max-number-of-jobs print the system limited number of jobs
# TODO Debian package
# TODO to kill from a run script parallel should set PARALLEL_PID that can be sig termed
# TAGS: parallel | parallel processing | multicore | multiprocessor | Clustering/Distributed Networks
# job control | multiple jobs | parallelization | text processing | cluster | filters
# Clustering Tools | Command Line Tools | Utilities | System Administration
# Bash parallel

View file

@ -1,489 +0,0 @@
test of cat pipe sh
1-col.txt
2-col.txt
bar
bar
foo
foo
foo2
ls 1-col.txt
ls 2-col.txt
ls a
ls b
ls 1-col.txt
ls 2-col.txt
ls a
ls b
1 1 10
1 1 10
1 1 15
1 1 15
4 4 26
6 6 41
1-col.txt
1-col.txt.diff
2-col.txt
2-col.txt.diff
a
b
ls 1-col.txt.diff|wc;echo 1-col.txt.diff
ls 1-col.txt|wc;echo 1-col.txt
ls 2-col.txt.diff|wc;echo 2-col.txt.diff
ls 2-col.txt|wc;echo 2-col.txt
ls a|wc;echo a
ls b|wc;echo b
### Check that we can have more input than max procs (-j 0)
touch more_than_5000-9990
touch more_than_5000-9991
touch more_than_5000-9992
touch more_than_5000-9993
touch more_than_5000-9994
touch more_than_5000-9995
touch more_than_5000-9996
touch more_than_5000-9997
touch more_than_5000-9998
touch more_than_5000-9999
1 1-col.txt
1 1-col.txt.diff
1 2-col.txt
1 2-col.txt.diff
1 more_than_5000-9901
1 more_than_5000-9902
1 more_than_5000-9903
1 more_than_5000-9904
1 more_than_5000-9905
1 more_than_5000-9906
1 more_than_5000-9907
1 more_than_5000-9908
1 more_than_5000-9909
1 more_than_5000-9910
1 more_than_5000-9911
1 more_than_5000-9912
1 more_than_5000-9913
1 more_than_5000-9914
1 more_than_5000-9915
1 more_than_5000-9916
1 more_than_5000-9917
1 more_than_5000-9918
1 more_than_5000-9919
1 more_than_5000-9920
1 more_than_5000-9921
1 more_than_5000-9922
1 more_than_5000-9923
1 more_than_5000-9924
1 more_than_5000-9925
1 more_than_5000-9926
1 more_than_5000-9927
1 more_than_5000-9928
1 more_than_5000-9929
1 more_than_5000-9930
1 more_than_5000-9931
1 more_than_5000-9932
1 more_than_5000-9933
1 more_than_5000-9934
1 more_than_5000-9935
1 more_than_5000-9936
1 more_than_5000-9937
1 more_than_5000-9938
1 more_than_5000-9939
1 more_than_5000-9940
1 more_than_5000-9941
1 more_than_5000-9942
1 more_than_5000-9943
1 more_than_5000-9944
1 more_than_5000-9945
1 more_than_5000-9946
1 more_than_5000-9947
1 more_than_5000-9948
1 more_than_5000-9949
1 more_than_5000-9950
1 more_than_5000-9951
1 more_than_5000-9952
1 more_than_5000-9953
1 more_than_5000-9954
1 more_than_5000-9955
1 more_than_5000-9956
1 more_than_5000-9957
1 more_than_5000-9958
1 more_than_5000-9959
1 more_than_5000-9960
1 more_than_5000-9961
1 more_than_5000-9962
1 more_than_5000-9963
1 more_than_5000-9964
1 more_than_5000-9965
1 more_than_5000-9966
1 more_than_5000-9967
1 more_than_5000-9968
1 more_than_5000-9969
1 more_than_5000-9970
1 more_than_5000-9971
1 more_than_5000-9972
1 more_than_5000-9973
1 more_than_5000-9974
1 more_than_5000-9975
1 more_than_5000-9976
1 more_than_5000-9977
1 more_than_5000-9978
1 more_than_5000-9979
1 more_than_5000-9980
1 more_than_5000-9981
1 more_than_5000-9982
1 more_than_5000-9983
1 more_than_5000-9984
1 more_than_5000-9985
1 more_than_5000-9986
1 more_than_5000-9987
1 more_than_5000-9988
1 more_than_5000-9989
1 more_than_5000-9990
1 more_than_5000-9991
1 more_than_5000-9992
1 more_than_5000-9993
1 more_than_5000-9994
1 more_than_5000-9995
1 more_than_5000-9996
1 more_than_5000-9997
1 more_than_5000-9998
1 more_than_5000-9999
4 b
6 a
1 1-col.txt
1 1-col.txt.diff
1 2-col.txt
1 2-col.txt.diff
1 more_than_5000-9901
1 more_than_5000-9902
1 more_than_5000-9903
1 more_than_5000-9904
1 more_than_5000-9905
1 more_than_5000-9906
1 more_than_5000-9907
1 more_than_5000-9908
1 more_than_5000-9909
1 more_than_5000-9910
1 more_than_5000-9911
1 more_than_5000-9912
1 more_than_5000-9913
1 more_than_5000-9914
1 more_than_5000-9915
1 more_than_5000-9916
1 more_than_5000-9917
1 more_than_5000-9918
1 more_than_5000-9919
1 more_than_5000-9920
1 more_than_5000-9921
1 more_than_5000-9922
1 more_than_5000-9923
1 more_than_5000-9924
1 more_than_5000-9925
1 more_than_5000-9926
1 more_than_5000-9927
1 more_than_5000-9928
1 more_than_5000-9929
1 more_than_5000-9930
1 more_than_5000-9931
1 more_than_5000-9932
1 more_than_5000-9933
1 more_than_5000-9934
1 more_than_5000-9935
1 more_than_5000-9936
1 more_than_5000-9937
1 more_than_5000-9938
1 more_than_5000-9939
1 more_than_5000-9940
1 more_than_5000-9941
1 more_than_5000-9942
1 more_than_5000-9943
1 more_than_5000-9944
1 more_than_5000-9945
1 more_than_5000-9946
1 more_than_5000-9947
1 more_than_5000-9948
1 more_than_5000-9949
1 more_than_5000-9950
1 more_than_5000-9951
1 more_than_5000-9952
1 more_than_5000-9953
1 more_than_5000-9954
1 more_than_5000-9955
1 more_than_5000-9956
1 more_than_5000-9957
1 more_than_5000-9958
1 more_than_5000-9959
1 more_than_5000-9960
1 more_than_5000-9961
1 more_than_5000-9962
1 more_than_5000-9963
1 more_than_5000-9964
1 more_than_5000-9965
1 more_than_5000-9966
1 more_than_5000-9967
1 more_than_5000-9968
1 more_than_5000-9969
1 more_than_5000-9970
1 more_than_5000-9971
1 more_than_5000-9972
1 more_than_5000-9973
1 more_than_5000-9974
1 more_than_5000-9975
1 more_than_5000-9976
1 more_than_5000-9977
1 more_than_5000-9978
1 more_than_5000-9979
1 more_than_5000-9980
1 more_than_5000-9981
1 more_than_5000-9982
1 more_than_5000-9983
1 more_than_5000-9984
1 more_than_5000-9985
1 more_than_5000-9986
1 more_than_5000-9987
1 more_than_5000-9988
1 more_than_5000-9989
1 more_than_5000-9990
1 more_than_5000-9991
1 more_than_5000-9992
1 more_than_5000-9993
1 more_than_5000-9994
1 more_than_5000-9995
1 more_than_5000-9996
1 more_than_5000-9997
1 more_than_5000-9998
1 more_than_5000-9999
4 b
6 a
1-col.txt.diff
1-col.txt.diff
2-col.txt
2-col.txt
2-col.txt.diff
2-col.txt.diff
1-col.txt.diff
1-col.txt.diff
2-col.txt
2-col.txt
2-col.txt.diff
2-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' 1-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' 1-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' 2-col.txt
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' 2-col.txt.diff
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' a
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' b
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9901
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9902
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9903
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9904
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9905
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9906
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9907
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9908
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9909
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9910
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9911
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9912
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9913
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9914
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9915
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9916
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9917
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9918
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9919
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9920
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9921
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9922
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9923
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9924
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9925
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9926
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9927
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9928
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9929
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9930
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9931
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9932
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9933
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9934
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9935
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9936
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9937
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9938
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9939
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9940
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9941
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9942
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9943
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9944
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9945
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9946
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9947
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9948
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9949
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9950
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9951
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9952
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9953
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9954
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9955
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9956
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9957
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9958
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9959
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9960
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9961
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9962
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9963
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9964
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9965
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9966
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9967
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9968
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9969
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9970
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9971
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9972
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9973
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9974
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9975
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9976
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9977
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9978
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9979
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9980
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9981
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9982
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9983
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9984
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9985
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9986
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9987
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9988
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9989
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9990
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9991
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9992
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9993
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9994
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9995
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-9998
perl -ne '/^\S+\s+\S+$/ and print $ARGV,"\n"' more_than_5000-9999
1-col.txt.diff
1-col.txt.diff
2-col.txt
2-col.txt
2-col.txt.diff
2-col.txt.diff
1-col.txt.diff
1-col.txt.diff
2-col.txt
2-col.txt
2-col.txt.diff
2-col.txt.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" 1-col.txt
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" 1-col.txt.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" 2-col.txt
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" 2-col.txt.diff
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" a
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" b
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9901
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9902
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9903
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9904
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9905
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9906
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9907
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9908
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9909
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9910
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9911
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9912
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9913
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9914
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9915
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9916
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9917
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9918
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9919
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9920
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9921
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9922
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9923
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9924
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9925
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9926
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9927
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9928
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9929
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9930
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9931
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9932
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9933
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9934
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9935
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9936
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9937
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9938
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9939
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9940
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9941
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9942
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9943
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9944
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9945
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9946
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9947
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9948
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9949
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9950
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9951
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9952
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9953
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9954
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9955
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9956
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9957
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9958
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9959
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9960
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9961
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9962
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9963
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9964
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9965
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9966
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9967
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9968
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9969
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9970
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9971
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9972
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9973
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9974
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9975
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9976
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9977
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9978
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9979
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9980
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9981
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9982
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9983
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9984
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9985
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9986
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9987
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9988
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9989
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9990
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9991
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9992
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9993
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9994
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9995
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-9998
perl -ne /^\\S+\\s+\\S+\$/\ and\ print\ \$ARGV,\"\\n\" more_than_5000-9999

View file

@ -1,14 +0,0 @@
### Test filenames containing UTF-8
.
./1-col.txt
./2-col.txt
./a
./a/bar
./a/foo
./a/foo2
./b
./b/bar
./b/foo
./中国 (Zhōngguó)
./中国 (Zhōngguó)/China's (中国) road.jpg
./中国 (Zhōngguó)/thumb_China's (中国) road.jpg

View file

@ -1,50 +0,0 @@
a 1
a 10
a 11
a 12
a 13
a 14
a 15
a 16
a 17
a 18
a 19
a 2
a 20
a 21
a 22
a 23
a 24
a 25
a 3
a 4
a 5
a 6
a 7
a 8
a 9
b 1
b 10
b 11
b 12
b 13
b 14
b 15
b 16
b 17
b 18
b 19
b 2
b 20
b 21
b 22
b 23
b 24
b 25
b 3
b 4
b 5
b 6
b 7
b 8
b 9

View file

@ -1,8 +0,0 @@
b801e53463bbe25ae078b5fa2652263d -
There are 917 dirs with 916 files
Removing files
982bd9f76f05cdd409ca0e8ceced92c7 -
There are 917 dirs with files
Removing dirs
eb6ee16fe9acc502c3123567cc789cbf -
There are 1 dirs with files

View file

@ -1,8 +0,0 @@
071eca55ffd15717546273235adeb775 -
There are 6246 dirs with 6246 files
Removing files
4e2ffc66811f839854f2f0071c1e0541 -
There are 6246 dirs with files
Removing dirs
1c91bf0327094531133e6ad95d2e23f5 -
There are 1 dirs with files

View file

@ -1,100 +0,0 @@
a 1
a 10
a 11
a 12
a 13
a 14
a 15
a 16
a 17
a 18
a 19
a 2
a 20
a 21
a 22
a 23
a 24
a 25
a 3
a 4
a 5
a 6
a 7
a 8
a 9
b 1
b 10
b 11
b 12
b 13
b 14
b 15
b 16
b 17
b 18
b 19
b 2
b 20
b 21
b 22
b 23
b 24
b 25
b 3
b 4
b 5
b 6
b 7
b 8
b 9
a 1
a 10
a 11
a 12
a 13
a 14
a 15
a 16
a 17
a 18
a 19
a 2
a 20
a 21
a 22
a 23
a 24
a 25
a 3
a 4
a 5
a 6
a 7
a 8
a 9
b 1
b 10
b 11
b 12
b 13
b 14
b 15
b 16
b 17
b 18
b 19
b 2
b 20
b 21
b 22
b 23
b 24
b 25
b 3
b 4
b 5
b 6
b 7
b 8
b 9

View file

@ -1,200 +0,0 @@
1
10
100
11
12
13
14
15
16
17
18
19
2
20
21
22
23
24
25
26
27
28
29
3
30
31
32
33
34
35
36
37
38
39
4
40
41
42
43
44
45
46
47
48
49
5
50
51
52
53
54
55
56
57
58
59
6
60
61
62
63
64
65
66
67
68
69
7
70
71
72
73
74
75
76
77
78
79
8
80
81
82
83
84
85
86
87
88
89
9
90
91
92
93
94
95
96
97
98
99
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 1
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 10
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 100
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 11
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 12
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 13
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 14
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 15
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 16
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 17
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 18
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 19
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 2
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 20
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 21
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 22
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 23
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 24
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 25
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 26
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 27
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 28
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 29
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 3
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 30
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 31
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 32
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 33
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 34
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 35
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 36
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 37
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 38
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 39
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 4
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 40
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 41
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 42
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 43
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 44
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 45
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 46
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 47
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 48
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 49
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 5
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 50
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 51
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 52
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 53
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 54
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 55
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 56
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 57
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 58
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 59
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 6
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 60
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 61
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 62
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 63
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 64
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 65
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 66
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 67
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 68
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 69
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 7
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 70
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 71
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 72
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 73
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 74
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 75
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 76
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 77
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 78
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 79
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 8
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 80
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 81
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 82
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 83
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 84
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 85
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 86
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 87
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 88
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 89
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 9
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 90
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 91
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 92
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 93
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 94
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 95
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 96
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 97
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 98
perl -e \$r=rand\(shift\)\;for\(\$f=0\;\$f\<\$r\;\$f++\){\$a=\"a\"x100}\;print\ shift,\"\\n\" 10000 99

View file

@ -1,32 +0,0 @@
b
d
1
10
2
3
4
5
6
7
8
9
1
10
2
3
4
5
6
7
8
9
1
10
2
3
4
5
6
7
8
9

View file

@ -1,3 +0,0 @@
Force outside the file handle limit
Start
end

View file

@ -1,15 +0,0 @@
### This causes problems if we kill child processes
33bf8b2986551515cdaff5e860618098 -
d7fb96d6a56d4347bc24930a395c431a -
### Test of xargs -m and -X
b35d8e49be8d94899b719c40d3f1f4bb -
3 60000 348894
1foo bar2foo bar3 Afoo barBfoo barC
1foo2foo3 1bar2bar3 AfooBfooC AbarBbarC
31d9274be5fdc2de59487cb05ba57776 -
6 119994 697800
31d9274be5fdc2de59487cb05ba57776 -
Chars per line: 116300
### Bug before 2009-08-26 causing regexp compile error or infinite loop
'a'
'a'

View file

@ -1 +0,0 @@
foo

View file

@ -1 +0,0 @@
75da7edc12b129d109af92592c61da56 -

View file

@ -1,52 +0,0 @@
### Test -k
begin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
end
### Test SIGTERM
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

View file

@ -1,79 +0,0 @@
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4
5 1
5 2
5 3
5 4
5 5
6 1
6 2
6 3
6 4
6 5
6 6
7 1
7 2
7 3
7 4
7 5
7 6
7 7
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 8
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 9
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
10 10
a1 b1
a2 b1 b2
a3 b1 b2 b3
a4 b1 b2 b3 b4
a5 b1 b2 b3 b4 b5
a6 b1 b2 b3 b4 b5 b6
a7 b1 b2 b3 b4 b5 b6 b7
a8 b1 b2 b3 b4 b5 b6 b7 b8
a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
a1 b1
a2 b1 2
a3 b1 2 3
a4 b1 2 3 4
a5 b1 2 3 4 5
a6 b1 2 3 4 5 6
a7 b1 2 3 4 5 6 7
a8 b1 2 3 4 5 6 7 8
a9 b1 2 3 4 5 6 7 8 9
a10 b1 2 3 4 5 6 7 8 9 10
31d9274be5fdc2de59487cb05ba57776 -
Chars per line (697800/6): 116300
22074f9acada52462defb18ba912d744 -
Chars per line (817788/7): 116826

View file

@ -1,241 +0,0 @@
### Test -L -l and --max-lines
a_b c
a_b c
a_b
c
a_b
c
a_b c
d
a_b c
d
a_b c d
e
a_b c d
e
a_b c
d
e
a_b c
d
e
a_b c d
e
a_b c d
e
a_b c
d
e
a_b c
d
e
a_b c d
e
a_b c d
e
a_b c
d
e
a_b c
d
e
### test too long args
Command line too long (1000005 >= 131071) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
xargs: argument line too long
1 2
3 4
5 6
7 8
Command line too long (1000007 >= 10) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
9 10
1 2
3 4
5 6
7 8
xargs: argument line too long
9 10
### Test -x
1 2
3 4
5 6
Command line too long (15 >= 10) at number 3: 12345...
7 8
1 2
3 4
5 6
xargs: argument line too long
7 8
1 2
3 4
5 6
7 8
9 10
1234
12
13
14
15
1 2
3 4
5 6
7 8
9 10
1234
12
13
14
15
### Test bugfix if no command given
Command line too long (1000002 >= 10) at number 1: zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz...
1 2 3 4 5
### Test -a and --arg-file: Read input from file instead of stdin
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
xargs Expect: 3 1 2
3
1
2
parallel Expect: 3 1 2
3
1
2
xargs Expect: 1 3 2
1
3
2
parallel Expect: 1 3 2
1
3
2
### Test -i and --replace: Replace with argument
replace
replace
replace
replace
replace
replace
replace
replace
replace
### Test -E: Artificial end-of-file
include this
include this
### Test -e and --eof: Artificial end-of-file
include this
include this
include this
include this
### Test -n and --max-args: Max number of args per line (only with -X and -m)
line 1
line 2
line 3
line 1 line 1
line 2
line 1
line 2
line 3
line 1 line 1
line 2
line 1
line 2
line 3
line 1
line 2
line 3
line 1 line 1
line 2
line 1 line 1
line 2
### Test --max-procs and -P: Number of processes
max proc 1
max proc 2
max proc 3
max proc 4
max proc 5
max proc 6
max proc 7
max proc 8
max proc 9
max proc 10
200% proc 1
200% proc 2
200% proc 3
200% proc 4
200% proc 5
200% proc 6
200% proc 7
200% proc 8
200% proc 9
200% proc 10
### Test --delimiter and -d: Delimiter instead of newline
# Yes there is supposed to be an extra newline for -d N
This is line 1
This is line 2
This is line 3
This is line 1
This is line 2
This is line 3
delimiter NUL line 1
line 2
line 3
delimiter TAB line 1
line 2
line 3
### Test --max-chars and -s: Max number of chars in a line
line 1 line 1
line 2
line 1 line 1
line 2
### Test --no-run-if-empty and -r: This should give no output
### Test --help and -h: Help output (just check we get the same amount of lines)
Output from -h and --help
4
4
### Test --version: Version output (just check we get the same amount of lines)
7
### Test --verbose and -t
echo bar
echo car
echo far
echo bar
echo car
echo far
### Test --show-limits
Maximal size of command: 131071
Maximal used size of command: 131071
Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please
press CTRL-D or CTRL-C
bar
car
far
Maximal size of command: 131071
Maximal used size of command: 100
Execution of will continue now, and it will try to read its input
and run commands; if this is not what you wanted to happen, please
press CTRL-D or CTRL-C
bar
car
far

View file

@ -1,204 +0,0 @@
### Test weird regexp chars
a1b1^c1[.}c a2b2^c2[.}c a3b3^c3[.}c a4b4^c4[.}c a5b5^c5[.}c a6b6^c6[.}c
### Test {.} and {}
### Test {.} with files that have no . but dir does
/tmp/test-of-{.}-parallel/subdir/file
/tmp/test-of-{.}-parallel/subdir/file{.}
ls 1-col.diff|wc;echo 1-col.diff
1 1 11
1-col.diff
ls 1-col.txt|wc;echo 1-col.txt
1 1 10
1-col.txt
ls 2-col.diff|wc;echo 2-col.diff
1 1 11
2-col.diff
ls 2-col.txt|wc;echo 2-col.txt
1 1 10
2-col.txt
ls a|wc;echo a
6 6 41
a
ls b|wc;echo b
4 4 26
b
ls 中国\ \(Zhōngguó\)|wc;echo 中国\ \(Zhōngguó\)
4 12 118
中国 (Zhōngguó)
1 1-col.diff
1 1-col.txt
1 2-col.diff
1 2-col.txt
6 a
4 b
4 中国 (Zhōngguó)
1 1-col.diff
1 1-col.txt
1 2-col.diff
1 2-col.txt
6 a
4 b
4 中国 (Zhōngguó)
touch -- 1-col/abc-1-col-1-col
touch -- 1-col/abc-1-col-1-col.diff
touch -- 1-col/abc-1-col-1-col.txt
touch -- 2-col/abc-2-col-2-col
touch -- 2-col/abc-2-col-2-col.diff
touch -- 2-col/abc-2-col-2-col.txt
touch -- a/abc-a-a
touch -- b/abc-b-b
touch -- 中国\ \(Zhōngguó\)/abc-中国\ \(Zhōngguó\)-中国\ \(Zhōngguó\)
rm -- 1-col/abc-1-col-1-col
rm -- 1-col/abc-1-col-1-col.diff
rm -- 1-col/abc-1-col-1-col.txt
rm -- 2-col/abc-2-col-2-col
rm -- 2-col/abc-2-col-2-col.diff
rm -- 2-col/abc-2-col-2-col.txt
rm -- a/abc-a-a
rm -- b/abc-b-b
rm -- 中国\ \(Zhōngguó\)/abc-中国\ \(Zhōngguó\)-中国\ \(Zhōngguó\)
### Test -m
1foo bar joe.gif2foo bar joe3 Afoo bar joeBfoo bar joeC
1foo2foo3 1bar2bar3 1joe.gif2joe3 AfooBfooC AbarBbarC AjoeBjoeC
a1.gif 2.gif 3.gif 4.gif 5.gif 6.gifb1 2 3 4 5 6c1 2 3 4 5 6
a1.gifb1c1 a2.gifb2c2 a3.gifb3c3 a4.gifb4c4 a5.gifb5c5 a6.gifb6c6
### Test -m with 60000 args
98c94dcab1efedab3f820935d230bc77 -
12 180011 1286837
### Test -X with 60000 args
12de4813eda45d364a51bef697eee299 -
13 120000 1586682
### Test -X with 60000 args and 5 expansions
19
15
13
10
7
### Test -I with shell meta chars
9
9
9
9
### Test {.}
'a'
'a'
begin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
end
### Test -I with -X and -m
1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4
5 1
5 2
5 3
5 4
5 5
6 1
6 2
6 3
6 4
6 5
6 6
7 1
7 2
7 3
7 4
7 5
7 6
7 7
8 1
8 2
8 3
8 4
8 5
8 6
8 7
8 8
9 1
9 2
9 3
9 4
9 5
9 6
9 7
9 8
9 9
10 1
10 2
10 3
10 4
10 5
10 6
10 7
10 8
10 9
10 10
a1 b1
a2 b1 b2
a3 b1 b2 b3
a4 b1 b2 b3 b4
a5 b1 b2 b3 b4 b5
a6 b1 b2 b3 b4 b5 b6
a7 b1 b2 b3 b4 b5 b6 b7
a8 b1 b2 b3 b4 b5 b6 b7 b8
a9 b1 b2 b3 b4 b5 b6 b7 b8 b9
a10 b1 b2 b3 b4 b5 b6 b7 b8 b9 b10
a1 b1
a2 b1 2
a3 b1 2 3
a4 b1 2 3 4
a5 b1 2 3 4 5
a6 b1 2 3 4 5 6
a7 b1 2 3 4 5 6 7
a8 b1 2 3 4 5 6 7 8
a9 b1 2 3 4 5 6 7 8 9
a10 b1 2 3 4 5 6 7 8 9 10
### Test -i
replace
### Test --replace
replace
### Test -t
echo bar
echo car
echo far
### Test --verbose
echo bar
echo car
echo far

View file

@ -1,573 +0,0 @@
### Test --transfer --return --cleanup
# Create some weirdly files in /tmp
### --transfer - abspath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
### --transfer - relpath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
### --transfer --cleanup - abspath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
### --transfer --cleanup - relpath
file1
file2
file3
file>fire
file5
file6
file7
file8
file9
file10
file : & ) \n*.jpg
file/./sub dir
file13
file14
file15
file16
file17
file18
file19
file20
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --return - abspath
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.out
/tmp/parallel.file10.out
/tmp/parallel.file13.out
/tmp/parallel.file14.out
/tmp/parallel.file15.out
/tmp/parallel.file16.out
/tmp/parallel.file17.out
/tmp/parallel.file18.out
/tmp/parallel.file19.out
/tmp/parallel.file2.out
/tmp/parallel.file20.out
/tmp/parallel.file3.out
/tmp/parallel.file5.out
/tmp/parallel.file6.out
/tmp/parallel.file7.out
/tmp/parallel.file8.out
/tmp/parallel.file9.out
/tmp/parallel.file>fire.out
### --return - relpath
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.out
tmp/parallel.file1.out
tmp/parallel.file10.out
tmp/parallel.file13.out
tmp/parallel.file14.out
tmp/parallel.file15.out
tmp/parallel.file16.out
tmp/parallel.file17.out
tmp/parallel.file18.out
tmp/parallel.file19.out
tmp/parallel.file2.out
tmp/parallel.file20.out
tmp/parallel.file3.out
tmp/parallel.file5.out
tmp/parallel.file6.out
tmp/parallel.file7.out
tmp/parallel.file8.out
tmp/parallel.file9.out
tmp/parallel.file>fire.out
### --return - multiple files
tmp/parallel.file : & ) \n*.jpg.file.done
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.file.done
tmp/parallel.file/sub dir.out
tmp/parallel.file1.file.done
tmp/parallel.file1.out
tmp/parallel.file10.file.done
tmp/parallel.file10.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
tmp/parallel.file9.out
tmp/parallel.file>fire.file.done
tmp/parallel.file>fire.out
### --return --cleanup - abspath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
OK
### --return --cleanup - relpath
tmp/parallel.file : & ) \n*.jpg.file.done
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.file.done
tmp/parallel.file/sub dir.out
tmp/parallel.file1.file.done
tmp/parallel.file1.out
tmp/parallel.file10.file.done
tmp/parallel.file10.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
tmp/parallel.file9.out
tmp/parallel.file>fire.file.done
tmp/parallel.file>fire.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --return --cleanup - multiple returns
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --transfer --return --cleanup - abspath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
OK
### --transfer --return --cleanup - relpath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --transfer --return --cleanup - multiple files
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --trc - abspath
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
OK
### --trc - relpath
tmp/parallel.file : & ) \n*.jpg.file.done
tmp/parallel.file : & ) \n*.jpg.out
tmp/parallel.file/sub dir.file.done
tmp/parallel.file/sub dir.out
tmp/parallel.file1.file.done
tmp/parallel.file1.out
tmp/parallel.file10.file.done
tmp/parallel.file10.out
tmp/parallel.file13.file.done
tmp/parallel.file13.out
tmp/parallel.file14.file.done
tmp/parallel.file14.out
tmp/parallel.file15.file.done
tmp/parallel.file15.out
tmp/parallel.file16.file.done
tmp/parallel.file16.out
tmp/parallel.file17.file.done
tmp/parallel.file17.out
tmp/parallel.file18.file.done
tmp/parallel.file18.out
tmp/parallel.file19.file.done
tmp/parallel.file19.out
tmp/parallel.file2.file.done
tmp/parallel.file2.out
tmp/parallel.file20.file.done
tmp/parallel.file20.out
tmp/parallel.file3.file.done
tmp/parallel.file3.out
tmp/parallel.file5.file.done
tmp/parallel.file5.out
tmp/parallel.file6.file.done
tmp/parallel.file6.out
tmp/parallel.file7.file.done
tmp/parallel.file7.out
tmp/parallel.file8.file.done
tmp/parallel.file8.out
tmp/parallel.file9.file.done
tmp/parallel.file9.out
tmp/parallel.file>fire.file.done
tmp/parallel.file>fire.out
good if no file
ls: cannot access tmp/parallel.file*: No such file or directory
OK
### --trc - multiple files
/tmp/parallel.file : & ) \n*.jpg.file.done
/tmp/parallel.file : & ) \n*.jpg.out
/tmp/parallel.file/sub dir.file.done
/tmp/parallel.file/sub dir.out
/tmp/parallel.file1.file.done
/tmp/parallel.file1.out
/tmp/parallel.file10.file.done
/tmp/parallel.file10.out
/tmp/parallel.file13.file.done
/tmp/parallel.file13.out
/tmp/parallel.file14.file.done
/tmp/parallel.file14.out
/tmp/parallel.file15.file.done
/tmp/parallel.file15.out
/tmp/parallel.file16.file.done
/tmp/parallel.file16.out
/tmp/parallel.file17.file.done
/tmp/parallel.file17.out
/tmp/parallel.file18.file.done
/tmp/parallel.file18.out
/tmp/parallel.file19.file.done
/tmp/parallel.file19.out
/tmp/parallel.file2.file.done
/tmp/parallel.file2.out
/tmp/parallel.file20.file.done
/tmp/parallel.file20.out
/tmp/parallel.file3.file.done
/tmp/parallel.file3.out
/tmp/parallel.file5.file.done
/tmp/parallel.file5.out
/tmp/parallel.file6.file.done
/tmp/parallel.file6.out
/tmp/parallel.file7.file.done
/tmp/parallel.file7.out
/tmp/parallel.file8.file.done
/tmp/parallel.file8.out
/tmp/parallel.file9.file.done
/tmp/parallel.file9.out
/tmp/parallel.file>fire.file.done
/tmp/parallel.file>fire.out
good if no file
ls: cannot access /tmp/parallel.file*: No such file or directory
OK

View file

@ -1,94 +0,0 @@
### Check warning if --transfer but file not found
Warning: /tmp/noexistant/file is not readable and will not be transferred
/tmp/noexistant/file
### Transfer for file starting with :
remote-:.:
content-:
remote-file:name.file:name
content-file:name
remote-file:name.foo.file:name
content-file:name.foo
remote-file: name.foo.file: name
content-file: name.foo
remote-file : name.foo.file : name
content-file : name.foo
### Check warning if --transfer but not --sshlogin
Warning: --transfer ignored as there are no remote --sshlogin
### Check warning if --return but not --sshlogin
Warning: --return ignored as there are no remote --sshlogin
### Check warning if --cleanup but not --sshlog10
### Check forced number of CPUs being respected
alpha
### Check more than 9 simultaneous sshlogins
### Check more than 9(relative) simultaneous sshlogins
### Check -S syntax
1
2
3
4
5
6
7
8
9
10
11
PUs being respected
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
nlv.pi.dk
alpha
alpha
alpha
alpha
alpha
alpha
alpha
alpha
alpha
alpha
alpha
### Check more than 9 simultaneous sshlogins
1
2
3
4
5
6
7
8
9
10
11
### Check more than 9(relative) simultaneous sshlogins
1
2
3
4
5
6
7
8
9
10
11
### Check -S syntax
1
2
3
4
5
6
7
8
9
10
11

View file

@ -1 +0,0 @@
### Test --transfer --return --cleanup - files with newline

View file

@ -1,8 +0,0 @@
### Test --number-of-cpus
1
### Test --number-of-cores
2
### Test --use-cpus-instead-of-cores
Cores should complete first on machines with less than 4 physical CPUs
cores done
CPUs done

View file

@ -1,11 +0,0 @@
### Test $PARALLEL
1
ssh -l parallel parallel-server2 echo\ 1;
1
ssh parallel-server3 echo\ 2;
2
### Test ~/.parallelrc
ssh -l parallel parallel-server2 echo\ 1;
1
ssh parallel-server3 echo\ 2;
2

View file

@ -1,58 +0,0 @@
### Test exit val
0
1
### Test --halt-on-error
1
parallel: Starting no more jobs. Waiting for 2 jobs to finish. This job failed:
sleep 2;false
1
parallel: This job failed:
sleep 2;false
1
sh: non_exist: command not found
2
parallel: Starting no more jobs. Waiting for 3 jobs to finish. This job failed:
sleep 2;false
sh: non_exist: command not found
parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed:
sleep 4; non_exist
127
parallel: This job failed:
sleep 2;false
1
### Test last dying print --halt-on-error
0
1
parallel: Starting no more jobs. Waiting for 9 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 1
2
parallel: Starting no more jobs. Waiting for 8 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 2
3
parallel: Starting no more jobs. Waiting for 7 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 3
4
parallel: Starting no more jobs. Waiting for 6 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 4
5
parallel: Starting no more jobs. Waiting for 5 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 5
6
parallel: Starting no more jobs. Waiting for 4 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 6
7
parallel: Starting no more jobs. Waiting for 3 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 7
8
0
parallel: Starting no more jobs. Waiting for 2 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 8
9
parallel: Starting no more jobs. Waiting for 1 jobs to finish. This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 9
9
0
1
parallel: This job failed:
perl -e sleep\ \$ARGV[0]\;print\ STDERR\ @ARGV,\"\\n\"\;\ exit\ shift 1
1

View file

@ -1,46 +0,0 @@
### Test --basefile with no --sshlogin
Warning: --basefile ignored as there are no remote --sshlogin
### Test --basefile + --cleanup + permissions
script1 run 1
script2 run 1
script1 run 2
script2 run 2
script1 run 3
script2 run 3
script1 run 4
script2 run 4
script1 run 5
script2 run 5
good if no file
ls: cannot access script1: No such file or directory
OK
ls: cannot access script2: No such file or directory
OK
### Test --basefile + --sshlogin :
1
10
11
12
13
2
3
4
5
6
7
8
9
1
10
11
12
13
2
3
4
5
6
7
8
9

View file

@ -4,6 +4,36 @@
PAR=parallel
echo '### Test -p --interactive'
cat >/tmp/parallel-script-for-expect <<_EOF
#!/bin/bash
seq 1 3 | parallel -k -p echo opt-p
seq 1 3 | parallel -k --interactive echo opt--interactive
_EOF
chmod 755 /tmp/parallel-script-for-expect
expect -b - <<_EOF
spawn /tmp/parallel-script-for-expect
expect "echo opt-p 1"
send "y\n"
expect "echo opt-p 2"
send "n\n"
expect "echo opt-p 3"
send "y\n"
expect "opt-p 1"
expect "opt-p 3"
expect "echo opt--interactive 1"
send "y\n"
expect "echo opt--interactive 2"
send "n\n"
expect "echo opt--interactive 3"
send "y\n"
expect "opt--interactive 1"
expect "opt--interactive 3"
_EOF
echo '### Test -L -l and --max-lines'
(echo a_b;echo c) | parallel -km -L2 echo
(echo a_b;echo c) | xargs -L2 echo

View file

@ -1,3 +1,15 @@
### Test -p --interactive
spawn /tmp/parallel-script-for-expect
echo opt-p 1 ?...y
echo opt-p 2 ?...n
echo opt-p 3 ?...y
opt-p 1
opt-p 3
echo opt--interactive 1 ?...y
echo opt--interactive 2 ?...n
echo opt--interactive 3 ?...y
opt--interactive 1
opt--interactive 3
### Test -L -l and --max-lines
a_b c
a_b c

View file

@ -0,0 +1 @@
### 64-bit wierdness - this did not complete on a 64-bit machine