parallel: Warn that TMPDIR with \n breaks --files, csh + --fifo/--cat.

This commit is contained in:
Ole Tange 2023-02-03 16:37:25 +01:00
parent d43495821a
commit 5d5cdcf77f
22 changed files with 614 additions and 169 deletions

View file

@ -5,6 +5,7 @@
Quote of the month:
--line-buffer, a flag
parallel, now more precise
Output is in sync
@ -13,6 +14,9 @@ Output is in sync
write a haiku about gnu parallel and the :::+ option
Praise GNU parallel, though. That gets me pretty far.
-- Your Obed. Servant, J. B. @Jeffinatorator
Got around to using GNU parallel for the first time from a suggestion by @jdwasmuth ... now I'm wishing I started using this years ago
-- Stefan Gavriliuc @GavriliucStefan@twitter

View file

@ -262,7 +262,7 @@ from:tange@gnu.org
to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20230222 ('Paludan/Leopard/Monterrey Park/Peru<<>>') released
Subject: GNU Parallel 20230222 ('(Turkey/Syria/Gaziantep)Balloon/Paludan/Leopard/Peru<<>>') released
GNU Parallel 20230222 ('<<>>') has been released. It is available for download at: lbry://@GnuParallel:4
@ -280,6 +280,8 @@ News about GNU Parallel:
https://www.redhat.com/sysadmin/perl-scripts
https://bioinformaticsworkbook.org/Appendix/GNUparallel/GNU_parallel_examples.html#gsc.tab=0
<<>>
GNU Parallel - For people who live life in the parallel lane.

View file

@ -2609,7 +2609,8 @@ sub parse_options(@) {
parse_sshlogin();
if(defined $opt::show_limits) { show_limits(); }
if(remote_hosts() and ($opt::X or $opt::m or $opt::xargs)) {
if(remote_hosts() and
(defined $opt::X or defined $opt::m or defined $opt::xargs)) {
# As we do not know the max line length on the remote machine
# long commands generated by xargs may fail
# If $opt::max_replace_args is set, it is probably safe
@ -2619,15 +2620,17 @@ sub parse_options(@) {
if(not defined $opt::jobs) { $opt::jobs = "100%"; }
open_joblog();
open_json_csv();
if($opt::sqlmaster or $opt::sqlworker) {
if(defined $opt::sqlmaster or defined $opt::sqlworker) {
$Global::sql = SQL->new($opt::sqlmaster || $opt::sqlworker);
}
if($opt::sqlworker) { $Global::membuffer ||= 1; }
if(defined $opt::sqlworker) { $Global::membuffer ||= 1; }
# The sqlmaster groups the arguments, so the should just read one
if($opt::sqlworker and not $opt::sqlmaster) {
if(defined $opt::sqlworker and not defined $opt::sqlmaster) {
$Global::max_number_of_args = 1;
}
if($Global::color or $opt::colorfailed) { Job::init_color(); }
if(defined $Global::color or defined $opt::colorfailed) {
Job::init_color();
}
}
sub check_invalid_option_combinations() {
@ -2651,19 +2654,19 @@ sub check_invalid_option_combinations() {
"--max-lines, and -L.");
wait_and_exit(255);
}
if(defined $opt::group and $opt::ungroup) {
if(defined $opt::group and defined $opt::ungroup) {
::error("--group cannot be combined with --ungroup.");
::wait_and_exit(255);
}
if(defined $opt::group and $opt::linebuffer) {
if(defined $opt::group and defined $opt::linebuffer) {
::error("--group cannot be combined with --line-buffer.");
::wait_and_exit(255);
}
if(defined $opt::ungroup and $opt::linebuffer) {
if(defined $opt::ungroup and defined $opt::linebuffer) {
::error("--ungroup cannot be combined with --line-buffer.");
::wait_and_exit(255);
}
if(defined $opt::tollef and not $opt::gnu) {
if(defined $opt::tollef and not defined $opt::gnu) {
::error("--tollef has been retired.",
"Remove --tollef or use --gnu to override --tollef.");
::wait_and_exit(255);
@ -2681,15 +2684,15 @@ sub check_invalid_option_combinations() {
"--noctrlc has been retired.");
::wait_and_exit(255);
}
if($opt::groupby) {
if(not $opt::pipe and not $opt::pipepart) {
if(defined $opt::groupby) {
if(not defined $opt::pipe and not defined $opt::pipepart) {
$opt::pipe = 1;
}
if($opt::remove_rec_sep) {
if(defined $opt::remove_rec_sep) {
::error("--remove-rec-sep is not compatible with --groupby");
::wait_and_exit(255);
}
if($opt::recstart) {
if(defined $opt::recstart) {
::error("--recstart is not compatible with --groupby");
::wait_and_exit(255);
}
@ -2698,6 +2701,16 @@ sub check_invalid_option_combinations() {
::wait_and_exit(255);
}
}
if($ENV{'TMPDIR'} =~ /\n/) {
if(defined $opt::files) {
::warning("--files do not work if \$TMPDIR contains newline.");
} elsif($Global::cshell
and
(defined $opt::cat or defined $opt::fifo)) {
::warning("--cat/--fifo fails under csh ".
"if \$TMPDIR contains newline.");
}
}
}
sub init_globals() {
@ -5249,6 +5262,7 @@ sub onall($@) {
my @joblogs;
for my $host (sort keys %Global::host) {
my $sshlogin = $Global::host{$host};
my $qsshlogin = Q($sshlogin->string());
my $joblog = tmp_joblog($opt::joblog);
if($joblog) {
push @joblogs, $joblog;
@ -5259,15 +5273,18 @@ sub onall($@) {
my $penv=$Global::parallel_env ?
"PARALLEL_ENV=".Q($Global::parallel_env) :
'';
my $qsshlogin = Q($sshlogin->string());
my $results;
if(defined $opt::results) {
$results = Q($opt::results) . $qsshlogin;
}
::debug("init", "$penv $0 $suboptions -j1 $joblog ",
((defined $opt::tag) ?
"--tagstring ".$qsshlogin : ""),
((defined $opt::tag) ? "--tagstring ".$qsshlogin : ""),
((defined $opt::results) ? "--results ".$results : ""),
" -S $qsshlogin ",
join(" ",shell_quote(@command,$quad,@argfiles)),"\n");
print $parallel_fh "$penv $0 $suboptions -j1 $joblog ",
((defined $opt::tag) ?
"--tagstring ".$qsshlogin : ""),
((defined $opt::tag) ? "--tagstring ".$qsshlogin : ""),
((defined $opt::results) ? "--results ".$results : ""),
" -S $qsshlogin ",
join(" ",shell_quote(@command,$quad,@argfiles)),"\0";
}
@ -8738,9 +8755,10 @@ sub control_path_dir($) {
if(not defined $self->{'control_path_dir'}) {
$self->{'control_path_dir'} =
# Use $ENV{'TMPDIR'} as that is typically not
# NFS mounted
# NFS mounted.
# The file system must support UNIX domain sockets
File::Temp::tempdir($ENV{'TMPDIR'}
. "/control_path_dir-XXXX",
. "/ctrlpath-XXXX",
CLEANUP => 1);
}
return $self->{'control_path_dir'};
@ -12402,7 +12420,7 @@ sub results_out($) {
}
$out .="/";
} else {
if($out =~ m:/$:) {
if($out =~ m:/$:s) {
# / = dir
if(-d $out or eval{ File::Path::mkpath($out); }) {
# OK
@ -12411,7 +12429,7 @@ sub results_out($) {
::wait_and_exit(255);
}
} else {
$out =~ m:(.*)/:;
$out =~ m:(.*)/:s;
File::Path::mkpath($1);
}
}
@ -12520,7 +12538,7 @@ sub results_out($) {
$Global::input_source_header{$n},
$quote ?
(
map {
grep { $_ ne "\0noarg" } map {
my $s = $_;
# Quote + as ++
$s =~ s/(.)/$map{$1}/gs;
@ -12533,7 +12551,7 @@ sub results_out($) {
$rec_ref->[$n-1]->orig()
) :
(
map {
grep { $_ ne "\0noarg" } map {
my $s = $_;
# Quote / as +z and + as ++
$s =~ s/($sep|\+)/$map{$1}/gos;

View file

@ -1881,11 +1881,16 @@ Spread input to jobs on stdin (standard input).
Read a block of data from stdin (standard input) and give one block of
data as input to one job.
The block size is determined by B<--block> (default: 1M). The strings
B<--recstart> and B<--recend> tell GNU B<parallel> how a record starts
and/or ends. The block read will have the final partial record removed
before the block is passed on to the job. The partial record will be
prepended to next block.
The block size is determined by B<--block> (default: 1M).
Except for the first and last record GNU B<parallel> only passes full
records to the job. The strings B<--recstart> and B<--recend>
determine where a record starts and ends: The border between two
records is defined as B<--recend> immediately followed by
B<--recstart>. GNU B<parallel> splits exactly after B<--recend> and
before B<--recstart>. The block will have the last partial record
removed before the block is passed on to the job. The partial record
will be prepended to next block.
You can limit the number of records to be passed with B<-N>, and set
the record size with B<-L>.
@ -1911,7 +1916,8 @@ B<--fifo> B<--cat> B<--pipe-part> B<-N> B<-L> B<--round-robin>
Pipe parts of a physical file.
B<--pipe-part> works similar to B<--pipe>, but is much faster.
B<--pipe-part> works similar to B<--pipe>, but is much faster. 5 GB/s
can easily be delivered.
B<--pipe-part> has a few limitations:

View file

@ -35,7 +35,7 @@ run_test() {
base=`basename "$script" .sh`
# Force spaces and < into TMPDIR - this will expose bugs
export TMPDIR=/tmp/"$base-tmp"/'
<'/tmp
`touch /tmp/tripwire` <"'"'"/tmp
rm -rf "$TMPDIR"
mkdir -p "$TMPDIR"
# Clean before. May be owned by other users
@ -49,6 +49,12 @@ run_test() {
run_once $script
fi
run_once $script
if [ -e /tmp/tripwire ] ; then
echo '!!!'
echo '!!! /tmp/tripwire TRIPPED !!!'
echo '!!!'
exit 1
fi
diff -Naur wanted-results/"$base" actual-results/"$base" ||
(touch "$script" && echo touch "$script")

View file

@ -52,7 +52,7 @@ start_centos3
pwd=$(pwd)
# If not run in dir parallel/testsuite: set testsuitedir to path of testsuite
testsuitedir=${testsuitedir:-$pwd}
cd $testsuitedir
cd $testsuitedir
# Copy binaries to server
cd testsuite/vagrant/tange/centos3/ 2>/dev/null
cd vagrant/tange/centos3/ 2>/dev/null

View file

@ -660,7 +660,8 @@ par_pipepart_block_bigger_2G() {
par_retries_replacement_string() {
tmp=$(mktemp)
parallel --retries {//} "echo {/} >>'$tmp';exit {/}" ::: 1/11 2/22 3/33
qtmp=$(parallel -0 --shellquote ::: "$tmp")
parallel --retries {//} "echo {/} >>$qtmp;exit {/}" ::: 1/11 2/22 3/33
sort "$tmp"
rm "$tmp"
}
@ -696,11 +697,13 @@ par_basic_halt() {
echo "eval{setpriority(0,0,9)}; while(1){}") > "$cpuburn"
chmod 700 "$cpuburn"
cp -a "$cpuburn" "$cpuburn2"
parallel -0 -j4 --halt 2 ::: 'sleep 1' "'$cpuburn'" false;
qcpuburn=$(parallel -0 --shellquote ::: "$cpuburn")
qcpuburn2=$(parallel -0 --shellquote ::: "$cpuburn2")
parallel -0 -j4 --halt 2 ::: 'sleep 1' "$qcpuburn" false;
killall $(basename "$cpuburn") 2>/dev/null &&
echo ERROR: cpuburn should already have been killed
parallel -0 -j4 --halt -2 ::: 'sleep 1' "'$cpuburn2'" true;
parallel -0 -j4 --halt -2 ::: 'sleep 1' "$qcpuburn2" true;
killall $(basename "$cpuburn2") 2>/dev/null &&
echo ERROR: cpuburn2 should already have been killed
rm "$cpuburn" "$cpuburn2"

View file

@ -303,10 +303,14 @@ par_failing_compressor() {
par_fifo_under_csh() {
echo '### Test --fifo under csh'
doit() {
csh -c "seq 3000000 | parallel -k --pipe --fifo 'sleep .{#};cat {}|wc -c ; false; echo \$status; false'"
echo exit $?
}
# csh does not seem to work with TMPDIR containing \n
doit
TMPDIR=/tmp
csh -c "seq 3000000 | parallel -k --pipe --fifo 'sleep .{#};cat {}|wc -c ; false; echo \$status; false'"
echo exit $?
doit
}
par_parset() {
@ -659,7 +663,8 @@ par_results_csv() {
echo "bug #: --results csv"
doit() {
parallel -k $@ --results -.csv echo ::: H2 22 23 ::: H1 11 12;
parallel -k $@ --results -.csv echo ::: H2 22 23 ::: H1 11 12 \
2> >(grep -v TMPDIR)
}
export -f doit
parallel -k --tag doit ::: '--header :' '' \

View file

@ -22,7 +22,8 @@ par_retries_0() {
echo '--retries 0 = inf'
echo this wraps at 256 and should retry until it wraps
tmp=$(mktemp)
parallel --retries 0 -u 'printf {} >> '"'$tmp'"';a=`stat -c %s '"'$tmp'"'`; echo -n " $a"; exit $a' ::: a
qtmp=$(parallel -0 --shellquote ::: "$tmp")
parallel --retries 0 -u 'printf {} >> '"$qtmp"';a=$(stat -c %s '"$qtmp"'); echo -n " $a"; exit $a' ::: a
echo
rm -f "$tmp"
}

View file

@ -21,6 +21,31 @@ par_sshloginfile() {
rm -f "$tmp"
}
par_nonall_results() {
echo '### --results --onall'
tmp="$TMPDIR"/onall
mkdir -p "$tmp"
parallel --results "$tmp"/noslash --onall -Scsh@lo,sh@lo ::: id pwd
parallel --results "$tmp"/slash/ --onall -Scsh@lo,sh@lo ::: id pwd
parallel --results "$tmp"/rplslash/{}/ --onall -Scsh@lo,sh@lo ::: id pwd
parallel --results "$tmp"/rplnoslash/{} --onall -Scsh@lo,sh@lo ::: id pwd
parallel --results "$tmp"/rpl1slash/{1}/ --onall -Scsh@lo,sh@lo ::: id pwd
parallel --results "$tmp"/rpl1noslash/{1} --onall -Scsh@lo,sh@lo ::: id pwd
find "$tmp"
rm -r "$tmp"
echo '### --results --nonall'
tmp="$TMPDIR"/nonall
mkdir -p "$tmp"
parallel --results "$tmp"/noslash --nonall -Scsh@lo,sh@lo pwd
parallel --results "$tmp"/slash/ --nonall -Scsh@lo,sh@lo pwd
parallel --results "$tmp"/rplslash/{}/ --nonall -Scsh@lo,sh@lo pwd
parallel --results "$tmp"/rplnoslash/{} --nonall -Scsh@lo,sh@lo pwd
parallel --results "$tmp"/rpl1slash/{1}/ --nonall -Scsh@lo,sh@lo pwd
parallel --results "$tmp"/rpl1noslash/{1} --nonall -Scsh@lo,sh@lo pwd
find "$tmp"
rm -r "$tmp"
}
par_env_underscore() {
echo '### --env _'
echo ignored_var >> ~/.parallel/ignored_vars

View file

@ -11,7 +11,8 @@ par_ssh_cmd_with_newline() {
echo '### Check --ssh with \n works'
ssh=$(mktemp)
cp -a /usr/bin/ssh "$ssh"
parallel --ssh "'$ssh'" -S sh@lo ::: id
qssh=$(parallel -0 --shellquote "$ssh")
parallel --ssh "$qssh" -S sh@lo ::: id
}
par_controlmaster() {
@ -55,7 +56,7 @@ par_input_loss_pipe() {
par_controlmaster_eats() {
echo 'bug #36707: --controlmaster eats jobs'
seq 2 | parallel -k --controlmaster --sshlogin localhost echo OK{}
seq 2 | parallel -k --controlmaster --sshlogin lo echo OK{}
}
par_lsh() {

View file

@ -5,6 +5,7 @@
# SPDX-License-Identifier: GPL-3.0-or-later
cpuburn=$(mktemp)
qcpuburn=$(parallel -0 --shellquote ::: "$cpuburn")
(echo '#!/usr/bin/perl'
echo "eval{setpriority(0,0,9)}; while(1){}") > "$cpuburn"
chmod 700 "$cpuburn"
@ -14,7 +15,7 @@ forceload () {
# Force load
LOAD=$1
# Start 10 times as many cpuburn
seq 0 0.1 $1 | parallel -j0 timeout 20 "'$cpuburn'" 2>/dev/null &
seq 0 0.1 $1 | parallel -j0 timeout 20 "$qcpuburn" 2>/dev/null &
PID=$!
# Give GNU Parallel 1 second to startup
sleep 1
@ -42,7 +43,7 @@ killall "$basename" 2>/dev/null
echo '### Test too slow spawning'
# Let the commands below run during high load
seq 1000 | timeout 20 parallel -j400% -N0 "'$cpuburn'" 2>/dev/null &
seq 1000 | timeout 20 parallel -j400% -N0 "$qcpuburn" 2>/dev/null &
PID=$!
seq 1 1000 | stdout nice nice parallel --halt 1 -uj0 -N0 kill $PID |
perl -pe '/parallel: Warning: Starting \d+ processes took/ and do {close STDIN; `kill '$PID';killall "$basename"`; print "OK\n"; exit }';

View file

@ -13,6 +13,7 @@ mkdir -p "$TMPDIR"
par_basic_shebang_wrap() {
echo "### Test basic --shebang-wrap"
script="$TMPDIR"/basic--shebang-wrap
qscript=$(parallel -0 --shellquote ::: "$script")
cat <<EOF > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k /usr/bin/perl
@ -23,11 +24,11 @@ EOF
args() { echo arg1; echo arg2; echo "arg3.1 arg3.2"; }
"$script" "$(args)"
echo "### Test basic --shebang-wrap Same as"
parallel -k /usr/bin/perl "'$script'" ::: "$(args)"
parallel -k /usr/bin/perl "$qscript" ::: "$(args)"
echo "### Test basic --shebang-wrap stdin"
args | "$script"
echo "### Test basic --shebang-wrap Same as"
args | parallel -k /usr/bin/perl "'$script'"
args | parallel -k /usr/bin/perl "$qscript"
rm "$script"
}
@ -37,6 +38,7 @@ par_shebang_with_parser_options() {
echo "### Test --shebang-wrap with parser options"
script="$TMPDIR"/with-parser--shebang-wrap
qscript=$(parallel -0 --shellquote ::: "$script")
cat <<EOF > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k /usr/bin/perl -p
@ -46,15 +48,16 @@ EOF
chmod 755 "$script"
"$script" /tmp/in12 /tmp/in45
echo "### Test --shebang-wrap with parser options Same as"
parallel -k /usr/bin/perl -p "'$script'" ::: /tmp/in12 /tmp/in45
parallel -k /usr/bin/perl -p "$qscript" ::: /tmp/in12 /tmp/in45
echo "### Test --shebang-wrap with parser options stdin"
(echo /tmp/in12; echo /tmp/in45) | "$script"
echo "### Test --shebang-wrap with parser options Same as"
(echo /tmp/in12; echo /tmp/in45) | parallel -k /usr/bin/perl "'$script'"
(echo /tmp/in12; echo /tmp/in45) | parallel -k /usr/bin/perl "$qscript"
rm "$script"
echo "### Test --shebang-wrap --pipe with parser options"
script="$TMPDIR"/pipe--shebang-wrap
qscript=$(parallel -0 --shellquote ::: "$script")
cat <<EOF > "$script"
#!/usr/local/bin/parallel --shebang-wrap -k --pipe /usr/bin/perl -p
@ -65,7 +68,7 @@ EOF
echo "### Test --shebang-wrap --pipe with parser options stdin"
cat /tmp/in12 /tmp/in45 | "$script"
echo "### Test --shebang-wrap --pipe with parser options Same as"
cat /tmp/in12 /tmp/in45 | parallel -k --pipe /usr/bin/perl\ -p "'$script'"
cat /tmp/in12 /tmp/in45 | parallel -k --pipe /usr/bin/perl\ -p "$qscript"
rm "$script"
rm /tmp/in12

View file

@ -319,7 +319,7 @@ par_l0_is_l1 ### Because of --tollef -l, then -l0 == -l1, sorry
par_l0_is_l1 l0 1
par_l0_is_l1 l0 2
par_linebuffer_files ### bug #48658: --linebuffer --files
par_linebuffer_files 20
par_linebuffer_files 21
par_link_files_as_only_arg bug #50685: single ::::+ does not work
par_link_files_as_only_arg 1 1 1
par_link_files_as_only_arg 2 2 2
@ -692,8 +692,9 @@ par_pipe_tag_v foo cat
par_pipe_tag_v foo 1
par_pipe_tag_v foo 2
par_pipe_tag_v foo 3
par_pipe_tag_v parallel: Warning: --files do not work if $TMPDIR contains newline.
par_pipe_tag_v foo /tmp/parallel-local-0.3s-tmp/
par_pipe_tag_v </tmp/tmpfile.par
par_pipe_tag_v `touch /tmp/tripwire` <"'/tmp/tmpfile.par
par_pipe_to_func ### bug #45998: --pipe to function broken
par_pipe_to_func 1
par_pipe_to_func pipefunc OK
@ -1357,24 +1358,24 @@ par_wd_3dot_local bug #45993: --wd ... should also work when run locally
par_wd_3dot_local parallel: Error: Cannot change into non-executable dir /bi: No such file or directory
par_wd_3dot_local /bin
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
par_wd_3dot_local </tmp
par_wd_3dot_local `touch /tmp/tripwire` <"'/tmp
par_wd_3dot_local OK
par_wd_3dot_local /
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
par_wd_3dot_local </tmp
par_wd_3dot_local `touch /tmp/tripwire` <"'/tmp
par_wd_3dot_local OK
par_wd_3dot_local /tmp
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
par_wd_3dot_local </tmp
par_wd_3dot_local `touch /tmp/tripwire` <"'/tmp
par_wd_3dot_local OK
par_wd_3dot_local ~/.parallel/tmp/hostname-0-0
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
par_wd_3dot_local </tmp
par_wd_3dot_local `touch /tmp/tripwire` <"'/tmp
par_wd_3dot_local OK
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
par_wd_3dot_local </tmp
par_wd_3dot_local `touch /tmp/tripwire` <"'/tmp
par_wd_3dot_local /tmp/parallel-local-0.0s-tmp/
par_wd_3dot_local </tmp
par_wd_3dot_local `touch /tmp/tripwire` <"'/tmp
par_wd_3dot_local OK
par_wd_dotdotdot ### parallel --wd ... should clean up
par_wd_dotdotdot 1 == 1

View file

@ -80,24 +80,28 @@ par_compress_prg_fails 1
par_compress_prg_fails parallel: Error: false failed.
par_compress_prg_fails parallel: Error: false failed.
par_compress_prg_fails --files 1
par_compress_prg_fails --files parallel: Warning: --files do not work if $TMPDIR contains newline.
par_compress_prg_fails --files parallel: Error: false failed.
par_compress_prg_fails --files parallel: Error: false failed.
par_compress_prg_fails --tag 1
par_compress_prg_fails --tag parallel: Error: false failed.
par_compress_prg_fails --tag parallel: Error: false failed.
par_compress_prg_fails --tag --files 1
par_compress_prg_fails --tag --files parallel: Warning: --files do not work if $TMPDIR contains newline.
par_compress_prg_fails --tag --files parallel: Error: false failed.
par_compress_prg_fails --tag --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer 1
par_compress_prg_fails --line-buffer parallel: Error: false failed.
par_compress_prg_fails --line-buffer parallel: Error: false failed.
par_compress_prg_fails --line-buffer --files 1
par_compress_prg_fails --line-buffer --files parallel: Warning: --files do not work if $TMPDIR contains newline.
par_compress_prg_fails --line-buffer --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer --tag 1
par_compress_prg_fails --line-buffer --tag parallel: Error: false failed.
par_compress_prg_fails --line-buffer --tag parallel: Error: false failed.
par_compress_prg_fails --line-buffer --tag --files 1
par_compress_prg_fails --line-buffer --tag --files parallel: Warning: --files do not work if $TMPDIR contains newline.
par_compress_prg_fails --line-buffer --tag --files parallel: Error: false failed.
par_compress_prg_fails --line-buffer --tag --files parallel: Error: false failed.
par_dryrun_timeout_ungroup bug #51039: --dry-run --timeout 1.4m -u breaks
@ -108,18 +112,22 @@ par_failing_compressor Test working/failing compressor/decompressor in all combi
par_failing_compressor (-k is used as a dummy argument)
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true'
@ -140,18 +148,22 @@ par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true'
par_failing_compressor C=cat;true,D=cat;true /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false'
par_failing_compressor C=cat;true,D=cat;false /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true'
par_failing_compressor C=cat;false,D=cat;true /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false'
par_failing_compressor C=cat;false,D=cat;false /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k --tag -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true'
@ -172,18 +184,22 @@ par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor C=cat;false,D=cat;false C=cat;false,D=cat;false
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true'
par_failing_compressor /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false'
par_failing_compressor /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true'
par_failing_compressor /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false'
par_failing_compressor /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k --line-buffer -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true'
@ -204,18 +220,22 @@ par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor C=cat;false,D=cat;false
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true'
par_failing_compressor /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;true' --decompress-program 'cat;false' doit ::: C='cat;true',D='cat;false'
par_failing_compressor /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;true' doit ::: C='cat;false',D='cat;true'
par_failing_compressor /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k --files --compress --compress-program 'cat;false' --decompress-program 'cat;false' doit ::: C='cat;false',D='cat;false'
par_failing_compressor /tmp/parallel-local-10s-tmp/
par_failing_compressor </tmpfile
par_failing_compressor `touch /tmpfile
par_failing_compressor parallel: Warning: --files do not work if $TMPDIR contains newline.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel -k -k -k -k --compress --compress-program 'cat;true' --decompress-program 'cat;true' doit ::: C='cat;true',D='cat;true'
@ -235,6 +255,52 @@ par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor parallel: Error: cat;false failed.
par_failing_compressor C=cat;false,D=cat;false
par_fifo_under_csh ### Test --fifo under csh
par_fifo_under_csh parallel: Warning: --cat/--fifo fails under csh if $TMPDIR contains newline.
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh Unmatched '"'.
par_fifo_under_csh Broken pipe
par_fifo_under_csh exit 22
par_fifo_under_csh 1048571
par_fifo_under_csh 1
par_fifo_under_csh 1048572
@ -734,7 +800,7 @@ par_parset 5
par_parset The commands to run can be an array
par_parset <<joe "double space" cartoon>>
par_parset /tmp/parallel-local-10s-tmp/
par_parset </tmp
par_parset `touch /tmp/tripwire` <"'/tmp
par_parset You cannot pipe into parset, but must use a tempfile
par_parset 1
par_parset 10
@ -1061,22 +1127,22 @@ par_reload_slf_every_second OK
par_results_csv bug #: --results csv
par_results_csv --header : --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmp/
par_results_csv --header : --tag --files --compress </tmpfile",
par_results_csv --header : --tag --files --compress `touch /tmpfile",
par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmp/
par_results_csv --header : --tag --files --compress </tmpfile",
par_results_csv --header : --tag --files --compress `touch /tmpfile",
par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmp/
par_results_csv --header : --tag --files --compress </tmpfile",
par_results_csv --header : --tag --files --compress `touch /tmpfile",
par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmp/
par_results_csv --header : --tag --files --compress </tmpfile",
par_results_csv --header : --tag --files --compress `touch /tmpfile",
par_results_csv --header : --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmp/
par_results_csv --header : --tag --files </tmpfile",
par_results_csv --header : --tag --files `touch /tmpfile",
par_results_csv --header : --tag --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmp/
par_results_csv --header : --tag --files </tmpfile",
par_results_csv --header : --tag --files `touch /tmpfile",
par_results_csv --header : --tag --files 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmp/
par_results_csv --header : --tag --files </tmpfile",
par_results_csv --header : --tag --files `touch /tmpfile",
par_results_csv --header : --tag --files 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmp/
par_results_csv --header : --tag --files </tmpfile",
par_results_csv --header : --tag --files `touch /tmpfile",
par_results_csv --header : --tag --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --tag --compress 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 22 11
par_results_csv --header : --tag --compress ",
@ -1097,22 +1163,22 @@ par_results_csv --header : --tag 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,1
par_results_csv --header : --tag ",
par_results_csv --header : --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --header : --files --compress </tmpfile",
par_results_csv --header : --files --compress `touch /tmpfile",
par_results_csv --header : --files --compress 2,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --header : --files --compress </tmpfile",
par_results_csv --header : --files --compress `touch /tmpfile",
par_results_csv --header : --files --compress 3,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --header : --files --compress </tmpfile",
par_results_csv --header : --files --compress `touch /tmpfile",
par_results_csv --header : --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --header : --files --compress </tmpfile",
par_results_csv --header : --files --compress `touch /tmpfile",
par_results_csv --header : --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --files 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --header : --files </tmpfile",
par_results_csv --header : --files `touch /tmpfile",
par_results_csv --header : --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --header : --files </tmpfile",
par_results_csv --header : --files `touch /tmpfile",
par_results_csv --header : --files 3,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --header : --files </tmpfile",
par_results_csv --header : --files `touch /tmpfile",
par_results_csv --header : --files 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --header : --files </tmpfile",
par_results_csv --header : --files `touch /tmpfile",
par_results_csv --header : --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,H2,H1,Stdout,Stderr
par_results_csv --header : --compress 1,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11
par_results_csv --header : --compress ",
@ -1133,42 +1199,42 @@ par_results_csv --header : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23
par_results_csv --header : ",
par_results_csv --tag --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files --compress </tmpfile",
par_results_csv --tag --files --compress `touch /tmpfile",
par_results_csv --tag --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --files 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --files 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --files 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --files 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --files 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --files 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --files 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmp/
par_results_csv --tag --files </tmpfile",
par_results_csv --tag --files `touch /tmpfile",
par_results_csv --tag --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --tag --compress 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1 H2 H1
par_results_csv --tag --compress ",
@ -1209,42 +1275,42 @@ par_results_csv --tag 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 2
par_results_csv --tag ",
par_results_csv --files --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --files --compress </tmpfile",
par_results_csv --files --compress `touch /tmpfile",
par_results_csv --files Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --files 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --files 3,:,999.999,999.999,0,6,0,0,"echo H2 12",H2,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --files 4,:,999.999,999.999,0,6,0,0,"echo 22 H1",22,H1,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --files 5,:,999.999,999.999,0,6,0,0,"echo 22 11",22,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --files 6,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --files 7,:,999.999,999.999,0,6,0,0,"echo 23 H1",23,H1,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --files 8,:,999.999,999.999,0,6,0,0,"echo 23 11",23,11,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --files 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"/tmp/parallel-local-10s-tmp/
par_results_csv --files </tmpfile",
par_results_csv --files `touch /tmpfile",
par_results_csv --compress Seq,Host,Starttime,JobRuntime,Send,Receive,Exitval,Signal,Command,V1,V2,Stdout,Stderr
par_results_csv --compress 1,:,999.999,999.999,0,6,0,0,"echo H2 H1",H2,H1,"H2 H1
par_results_csv --compress ",
@ -1358,7 +1424,7 @@ par_tmp_full parallel: Error: Is the disk full?
par_tmp_full parallel: Error: Change $TMPDIR with --tmpdir or use --compress.
par_tmux_fg bug #50107: --tmux --fg should also write how to access it
par_tmux_fg See output with: tmux -S '/tmp/parallel-local-10s-tmp/
par_tmux_fg <tmpfile' attach
par_tmux_fg `touch tmpfile' attach
par_tmux_fg open terminal failed: not a terminal
par_totaljobs OK
par_xargs_compat xargs compatibility

View file

@ -127,17 +127,17 @@ par_file_rpl ### file as replacement string
par_file_rpl contest1
par_file_rpl contest2
par_file_rpl File name /tmp/parallel-local-1s-tmp/
par_file_rpl </tmp/tmp.XXXXXX
par_file_rpl `touch /tmp/tripwire` <"'/tmp/tmp.XXXXXX
par_file_rpl contest1
par_file_rpl contest2
par_file_rpl File name /parallel-local-1s-tmp/
par_file_rpl </tmp/tmp.XXXXXX/parallel-local-1s-tmp/
par_file_rpl </parallel-local-1s-tmp/
par_file_rpl </tmp/tmp.XXXXXX/tmp.XXXXXX
par_file_rpl `touch /tmp/tripwire` <"'/tmp/tmp.XXXXXX/parallel-local-1s-tmp/
par_file_rpl `touch /parallel-local-1s-tmp/
par_file_rpl `touch /tmp/tripwire` <"'/tmp/tmp.XXXXXX/tripwire` <"'/tmp/tmp.XXXXXX
par_file_rpl contest1
par_file_rpl contest2
par_file_rpl File name /tmp/parallel-local-1s-tmp/
par_file_rpl </tmp/tmp.XXXXXX
par_file_rpl `touch /tmp/tripwire` <"'/tmp/tmp.XXXXXX
par_file_rpl 1
par_file_rpl 1
par_file_rpl 2
@ -493,7 +493,7 @@ par_profiles_with_space /bin/bash=/bin/bash
par_profiles_with_space echo '/bin/bash=/bin/bash'
par_profiles_with_space /bin/bash=/bin/bash
par_profiles_with_space With script in $PARALLEL /bin/bash=/tmp/parallel-local-1s-tmp/
par_profiles_with_space </tmp
par_profiles_with_space `touch /tmp/tripwire` <"'/tmp
par_pxz_complains bug #44250: pxz complains File format not recognized but decompresses anyway
par_pxz_complains ls: cannot access '/OK-if-missing-file': No such file or directory
par_pxz_complains can not seek in input: Illegal seek

View file

@ -97,4 +97,4 @@ par_sem_dir ### bug #58985: sem stall if .parallel/semaphores is chmod 0
par_sem_dir parallel: Error: Semaphoredir must be writable: '~/.parallel/semaphores'
par_tmux_termination ### --tmux test - check termination
par_tmux_termination See output with: tmux -S '/tmp/parallel-local-race01-tmp/
par_tmux_termination </tmp/tmsXXXXX' attach
par_tmux_termination `touch /tmp/tripwire` <"'"'"'/tmp/tmsXXXXX' attach

View file

@ -42,6 +42,304 @@ par_multiple_hosts_repeat_arg parallel: Warning: Using -X or -m with --sshlogin
par_multiple_hosts_repeat_arg 1
par_multiple_hosts_repeat_arg 2
par_multiple_hosts_repeat_arg 3
par_nonall_results ### --results --onall
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1/id
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1/id/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1/id/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1/id/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1/pwd
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1/pwd/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1/pwd/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashsh@lo/1/pwd/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/idsh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/idcsh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/idcsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/pwdsh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/idcsh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/pwdcsh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/idsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/pwdcsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/pwdsh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/pwdsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/idsh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1noslash/pwdcsh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1/id
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1/id/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1/id/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1/id/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1/pwd
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1/pwd/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1/pwd/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/sh@lo/1/pwd/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1/id
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1/id/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1/id/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1/id/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1/pwd
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1/pwd/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1/pwd/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/slash/csh@lo/1/pwd/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/idsh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/idcsh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/idcsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/pwdsh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/idcsh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/pwdcsh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/idsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/pwdcsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/pwdsh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/pwdsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/idsh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplnoslash/pwdcsh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/id
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/id/sh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/id/csh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/id/csh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/id/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/id/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/id/sh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/pwd
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/pwd/sh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/pwd/csh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/pwd/csh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/pwd/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/pwd/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rpl1slash/pwd/sh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1/id
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1/id/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1/id/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1/id/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1/pwd
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1/pwd/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1/pwd/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/noslashcsh@lo/1/pwd/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/id
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/id/sh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/id/csh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/id/csh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/id/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/id/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/id/sh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/pwd
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/pwd/sh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/pwd/csh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/pwd/csh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/pwd/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/pwd/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/onall/rplslash/pwd/sh@lo.err
par_nonall_results ### --results --nonall
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashsh@lo/1
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashsh@lo/1/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashsh@lo/1/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashsh@lo/1/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1noslash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1noslash/sh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1noslash/csh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1noslash/csh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1noslash/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1noslash/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1noslash/sh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/sh@lo/1
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/sh@lo/1/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/sh@lo/1/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/sh@lo/1/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/csh@lo/1
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/csh@lo/1/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/csh@lo/1/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/slash/csh@lo/1/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplnoslash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplnoslash/sh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplnoslash/csh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplnoslash/csh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplnoslash/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplnoslash/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplnoslash/sh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1slash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1slash/sh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1slash/csh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1slash/csh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1slash/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1slash/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rpl1slash/sh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashcsh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashcsh@lo/1
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashcsh@lo/1/seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashcsh@lo/1/stderr
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/noslashcsh@lo/1/stdout
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplslash
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplslash/sh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplslash/csh@lo.err
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplslash/csh@lo.seq
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplslash/sh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplslash/csh@lo
par_nonall_results /tmp/parallel-local-ssh4-tmp/
par_nonall_results `touch /tmp/tripwire` <"'/tmp/nonall/rplslash/sh@lo.err
par_sshloginfile ### --slf with mIxEd cAsE
par_sshloginfile 1
par_sshloginfile 2
@ -77,9 +375,9 @@ par_tmux_different_shells 0
par_tmux_different_shells 4
par_tmux_length ### works
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
par_tmux_length <' attach
par_tmux_length `touch ' attach
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
par_tmux_length <' attach
par_tmux_length `touch ' attach
par_tmux_length ### These blocked due to length
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/
par_tmux_length See output with: tmux -S '/tmp/parallel-local-ssh4-tmp/

View file

@ -46,24 +46,24 @@ echo '### bug #42041: Implement $PARALLEL_JOBSLOT'
echo '### bug #42363: --pipepart and --fifo/--cat does not work'
### bug #42363: --pipepart and --fifo/--cat does not work
seq 100 > /tmp/bug42363; parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:(/tmp.*par).....:${1}XXXXX:'; parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:(/tmp.*par).....:${1}XXXXX:'; rm /tmp/bug42363
14 14 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
9 9 28 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
14 14 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
9 9 28 '/tmp/parallel-local22-tmp/'$'\n'' </tmp/parXXXXX'
14 14 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
9 9 28 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
14 14 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
11 11 33 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
9 9 28 '/tmp/parallel-local22-tmp/'$'\n'' `touch /tmp/tripwire` <"'\''/tmp/parXXXXX'
echo '### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile'
### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile
parallel --pipepart -a /etc/passwd -L 1 should not be run
@ -166,6 +166,7 @@ Send Receive Exitval
0 332 0
0 336 0
Send Receive Exitval
parallel: Warning: --files do not work if $TMPDIR contains newline.
echo '### --files --tag'
### --files --tag
seq 100 111 | parallel --files --tag --joblog /dev/stderr seq {} '|' pv -qL100 2>&1 >/dev/null | cut -f 5-7 | sort
@ -182,6 +183,7 @@ Send Receive Exitval
0 332 0
0 336 0
Send Receive Exitval
parallel: Warning: --files do not work if $TMPDIR contains newline.
echo '### --pipe'
### --pipe
seq 1000 | parallel --joblog /dev/stderr --block 1111 --pipe pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort
@ -222,6 +224,7 @@ Send Receive Exitval
1108 1108 0
569 569 0
Send Receive Exitval
parallel: Warning: --files do not work if $TMPDIR contains newline.
echo '### --files --pipe --tag'
### --files --pipe --tag
seq 1000 | parallel --joblog /dev/stderr --block 1111 --files --pipe --tag pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort
@ -230,6 +233,7 @@ Send Receive Exitval
1108 1108 0
569 569 0
Send Receive Exitval
parallel: Warning: --files do not work if $TMPDIR contains newline.
echo '### --pipe --round-robin'
### --pipe --round-robin
seq 1000 | parallel --joblog /dev/stderr --block 1111 -j2 --pipe --round-robin pv -qL300 2>&1 >/dev/null | cut -f 5-7 | sort

View file

@ -2,15 +2,15 @@ echo '### tmux-1.9'
### tmux-1.9
seq 510 512 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
</tmp/tmsXXXXX' attach
`touch /tmp/tripwire` <"'"'"'/tmp/tmsXXXXX' attach
0
seq 0000 10 510 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
</tmp/tmsXXXXX' attach
`touch /tmp/tripwire` <"'"'"'/tmp/tmsXXXXX' attach
0
echo '### tmux-1.9 fails' seq 512 10 2000 | PARALLEL_TMUX=tmux-1.9 par_tmux
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
</tmp/tmsXXXXX' attach
`touch /tmp/tripwire` <"'"'"'/tmp/tmsXXXXX' attach
0
seq 2001 10 3000 | PARALLEL_TMUX=tmux-1.9 par_tmux
parallel: Error: Command line too long (2012 >= 523) at input 0: 2001
@ -66,13 +66,13 @@ echo '### tmux-1.9 0..255 ascii'
### tmux-1.9 0..255 ascii
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux --timeout 5 echo | par_tmux_filter; echo $?
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
</tmp/tmsXXXXX' attach
`touch /tmp/tripwire` <"'"'"'/tmp/tmsXXXXX' attach
0
echo '### Test output ascii'
### Test output ascii
rm -f /tmp/paralocal7-ascii*; perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } $_-10..$_),"\n" } 1..255' | stdout parallel --tmux echo {}'>>/tmp/paralocal7-ascii{%}' | par_tmux_filter; sort /tmp/paralocal7-ascii* | md5sum
See output with: tmux -S '/tmp/parallel-local7-tmp/
</tmp/tmsXXXXX' attach
`touch /tmp/tripwire` <"'"'"'/tmp/tmsXXXXX' attach
053c7e8e945ef7641fc63bc309ac069d -
echo '### Test critical lengths. Must not block'
### Test critical lengths. Must not block
@ -80,7 +80,7 @@ echo '### Test critical lengths. Must not block'
parallel: Error: Command line too long (150 >= -1264) at input 0: 140
seq 140 260 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
See output with: tmux-1.9 -S '/tmp/parallel-local7-tmp/
</tmp/tmsXXXXX' attach
`touch /tmp/tripwire` <"'"'"'/tmp/tmsXXXXX' attach
seq 560 850 | PARALLEL_TMUX=tmux-1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
parallel: Error: Command line too long (568 >= -1264) at input 0: 560
seq 560 850 | PARALLEL_TMUX=tmux-1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter

View file

@ -151,7 +151,7 @@ num8
tsv-file.tsv
foo
/tmp/parallel-tutorial-tmp/
</tmp
`touch /tmp/tripwire` <"'/tmp
my_func() {
echo in my_func $1
}
@ -441,11 +441,12 @@ echo C
1-end
parallel --files echo ::: A B C
/tmp/parallel-tutorial-tmp/
</tmp/tempfile
`touch /tmp/tripwire` <"'/tmp/tempfile
/tmp/parallel-tutorial-tmp/
</tmp/tempfile
`touch /tmp/tripwire` <"'/tmp/tempfile
/tmp/parallel-tutorial-tmp/
</tmp/tempfile
`touch /tmp/tripwire` <"'/tmp/tempfile
parallel: Warning: --files do not work if $TMPDIR contains newline.
parallel --tmpdir /var/tmp --files echo ::: A B C
/var/tmp/tempfile
parallel --results outdir echo ::: A B C
@ -516,7 +517,7 @@ parallel: Warning: or increasing /proc/sys/fs/file-max
123 abc ABC
seq 10 20 | parallel --tmux 'echo start {}; sleep {}; echo done {}'
See output with: tmux -S '/tmp/parallel-tutorial-tmp/
</tmp/tmsXXXXX' attach
`touch /tmp/tripwire` <"'"'"'/tmp/tmsXXXXX' attach
tmux -S /tmp/tmsXXXXX attach
no sessions
parallel --delay 2.5 echo Starting {}\;date ::: 1 2 3
@ -709,7 +710,7 @@ foo
parallel --workdir ... -S $SERVER1 pwd ::: ""
/home/parallel
/tmp/parallel-tutorial-tmp/
</tmp
`touch /tmp/tripwire` <"'/tmp
/home/parallel/.TMPWORKDIR
parallel -S $SERVER1 --sshdelay 0.2 echo ::: 1 2 3
9

View file

@ -48,8 +48,8 @@ def 3
dburl mysql://tange:tange@localhost:3306/tange
databasedriver mysql user tange password tange host localhost port 3306 database tange query
[ | ((sleep 1; rm '/tmp/sql01-tmp/
<tmpfile') & mysql --defaults-extra-file='/tmp/sql01-tmp/
<tmpfile' --host=localhost --user=tange --port=3306 tange)]
`touch /tmp/tripwire` <"'"'"'tmpfile') & mysql --defaults-extra-file='/tmp/sql01-tmp/
`touch /tmp/tripwire` <"'"'"'tmpfile' --host=localhost --user=tange --port=3306 tange)]
Test if --debug works
Yes it does
### Test --version -V