parset: set exit code.

This commit is contained in:
Ole Tange 2018-08-23 00:21:29 +02:00
parent 29fbb5f85f
commit 490474ea8c
42 changed files with 2513 additions and 2851 deletions

View file

@ -206,35 +206,22 @@ to:parallel@gnu.org, bug-parallel@gnu.org
stable-bcc: Jesse Alama <jessealama@fastmail.fm>
Subject: GNU Parallel 20180722 ('Crimson Hexagon') released [alpha] <<[stable]>>
Subject: GNU Parallel 20180822 ('Genova/Lombok/AM2431/Zimbabwe/Parker Solar Probe') released [alpha] <<[stable]>>
GNU Parallel 20180722 ('Crimson Hexagon') [alpha] <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
GNU Parallel 20180822 ('') [alpha] <<[stable]>> has been released. It is available for download at: http://ftpmirror.gnu.org/parallel/
This release has signficant changes and is considered alpha quality.
<<No new functionality was introduced so this is a good candidate for a stable release.>>
Quote of the month:
I've been using GNU Parallel very much and effectively lately.
Such an easy way to get huge speed-ups with my simple bash/Perl/Python
programs -- parallelize them!
-- Ken Youens-Clark @kycl4rk@twitter
GNU parallel is a thing of magic.
-- Josh Meyer @joshmeyerphd@twitter
New in this release:
* The quoting engine has been changed. Instead of using \-quoting GNU Parallel now uses '-quoting in bash/ash/dash/ksh. This should improve compatibility with different locales. This is a big change causing this release to be alpha quality.
* The CPU calculation has changed. By default GNU Parallel uses the number of CPU threads as the number of CPUs. This can be change to the number of CPU cores or number of CPU sockets with --use-cores-instead-of-threads or --use-sockets-instead-of-threads.
* The detected number of sockets, cores, and threads can be shown with --number-of-sockets, --number-of-cores, and --number-of-threads.
* env_parallel now support mksh using env_parallel.mksh.
* GNU Parallel is distributed as part of Snippy https://github.com/tseemann/snippy
* GNU Parallel: Ejecutar comandos simultáneamente en Linux https://esgeeks.com/gnu-parallel-ejecutar-comandos-simultaneo-linux/
* Parallel download genomic data with GNU-Parallel https://digibio.blogspot.com/search/label/GNU-Parallel
* How to install GNU Parallel https://www.techrepublic.com/videos/how-to-install-gnu-parallel/
<<Citation not OK: BAMClipper: removing primers from alignments to minimize false-negative mutations in amplicon next-generation sequencing https://www.nature.com/articles/s41598-017-01703-6>>

View file

@ -204,7 +204,7 @@ env_parallel() {
_error_PAR() {
echo "env_parallel: Error: $@" >&2
}
if _which_PAR parallel >/dev/null; then
true parallel found in path
else
@ -300,12 +300,12 @@ env_parallel() {
}
parset() {
_parset_parallel_prg=parallel
_parset_PARALLEL_PRG=parallel
_parset_main "$@"
}
env_parset() {
_parset_parallel_prg=env_parallel
_parset_PARALLEL_PRG=env_parallel
_parset_main "$@"
}
@ -328,15 +328,22 @@ _parset_main() {
# parset "var_a4 var_b4 var_c4" echo ::: {1..3}
# echo $var_c4
_parset_name="$1"
if [ "$_parset_name" = "" ] ; then
_make_TEMP() {
# mktemp does not exist on some OS
perl -e 'use File::Temp qw(tempfile);
$ENV{"TMPDIR"} ||= "/tmp";
print((tempfile(DIR=>$ENV{"TMPDIR"}, TEMPLATE => "parXXXXX"))[1])'
}
_parset_NAME="$1"
if [ "$_parset_NAME" = "" ] ; then
echo parset: Error: No destination variable given. >&2
echo parset: Error: Try: >&2
echo parset: Error: ' ' parset myarray echo ::: foo bar >&2
return 255
fi
shift
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -ne 'chomp;for (split /[, ]/) {
# Allow: var_32 var[3]
if(not /^[a-zA-Z_][a-zA-Z_0-9]*(\[\d+\])?$/) {
@ -347,25 +354,30 @@ _parset_main() {
}
exit $exitval;
' || return 255
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
_exit_FILE=`_make_TEMP`
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_NAME" ; then
# $_parset_NAME contains , or space
# Split on , or space to get the names
eval "`
# Compute results into files
$_parset_parallel_prg --files -k "$@" |
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
# var1= cat tmpfile1; rm tmpfile1
# var2= cat tmpfile2; rm tmpfile2
parallel -q echo {2}='\`cat {1}; rm {1}\`' :::: - :::+ \`
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -pe 's/,/ /g'
\`
`"
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# Supported in: bash zsh ksh
# Arrays do not work in: ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
# $_parset_NAME does not contain , or space
# => $_parset_NAME is the name of the array to put data into
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_NAME=( $(
# Compute results into files. Save exit value
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "'
) )"
fi
return `cat "$_exit_FILE"; rm "$_exit_FILE"`
}

View file

@ -300,12 +300,12 @@ env_parallel() {
}
parset() {
_parset_parallel_prg=parallel
_parset_PARALLEL_PRG=parallel
_parset_main "$@"
}
env_parset() {
_parset_parallel_prg=env_parallel
_parset_PARALLEL_PRG=env_parallel
_parset_main "$@"
}
@ -328,15 +328,22 @@ _parset_main() {
# parset "var_a4 var_b4 var_c4" echo ::: {1..3}
# echo $var_c4
_parset_name="$1"
if [ "$_parset_name" = "" ] ; then
_make_TEMP() {
# mktemp does not exist on some OS
perl -e 'use File::Temp qw(tempfile);
$ENV{"TMPDIR"} ||= "/tmp";
print((tempfile(DIR=>$ENV{"TMPDIR"}, TEMPLATE => "parXXXXX"))[1])'
}
_parset_NAME="$1"
if [ "$_parset_NAME" = "" ] ; then
echo parset: Error: No destination variable given. >&2
echo parset: Error: Try: >&2
echo parset: Error: ' ' parset myarray echo ::: foo bar >&2
return 255
fi
shift
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -ne 'chomp;for (split /[, ]/) {
# Allow: var_32 var[3]
if(not /^[a-zA-Z_][a-zA-Z_0-9]*(\[\d+\])?$/) {
@ -347,25 +354,30 @@ _parset_main() {
}
exit $exitval;
' || return 255
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
_exit_FILE=`_make_TEMP`
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_NAME" ; then
# $_parset_NAME contains , or space
# Split on , or space to get the names
eval "$(
# Compute results into files
$_parset_parallel_prg --files -k "$@" |
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
# var1=`cat tmpfile1; rm tmpfile1`
# var2=`cat tmpfile2; rm tmpfile2`
parallel -q echo {2}='`cat {1}; rm {1}`' :::: - :::+ $(
echo "$_parset_name" |
perl -pe 's/,/ /g'
echo "$_parset_NAME" | perl -pe 's/,/ /g'
)
)"
);
"
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# Supported in: bash zsh ksh
# Arrays do not work in: ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
# $_parset_NAME does not contain , or space
# => $_parset_NAME is the name of the array to put data into
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_NAME=( $(
# Compute results into files. Save exit value
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "'
) )"
fi
return `cat "$_exit_FILE"; rm "$_exit_FILE"`
}

View file

@ -55,7 +55,7 @@ else
# Deal with --env _
cat <<'EOF' > $_tMpscRIpt
#!/usr/bin/perl
for(@ARGV){
$next_is_env and push @envvar, split/,/, $_;
$next_is_env=/^--env$/;
@ -125,8 +125,8 @@ else
# Quoted: s/\^/\\001alias\ /\;
alias | \
perl -ne '/^'"$_grep_REGEXP"'/ or next; /^'"$_ignore_UNDERSCORE"'[^_a-zA-Z]/ and next; print' | \
perl -pe s/\\047/\\047\\042\\047\\042\\047/g\;s/\^\(\\S+\)\(\\s+\)\\\(\(.\*\)\\\)/\\1\\2\\3/\;s/\^\(\\S+\)\(\\s+\)\(.\*\)/\\1\\2\\047\\3\\047/\;s/\^/\\001alias\ /\;s/\\\!/\\\\\\\!/g >> $_tMpaLLfILe
perl -pe s/\\047/\\047\\042\\047\\042\\047/g\;s/\^\(\\S+\)\(\\s+\)\\\(\(.\*\)\\\)/\\1\\2\\3/\;s/\^\(\\S+\)\(\\s+\)\(.\*\)/\\1\\2\\047\\3\\047/\;s/\^/\\001alias\ /\;s/\\\!/\\\\\\\!/g >> $_tMpaLLfILe
setenv PARALLEL_ENV "`cat $_tMpaLLfILe; rm $_tMpaLLfILe`";
unset _tMpaLLfILe;
# Use $PARALLEL set in calling alias

View file

@ -204,7 +204,7 @@ env_parallel() {
_error_PAR() {
echo "env_parallel: Error: $@" >&2
}
if _which_PAR parallel >/dev/null; then
true parallel found in path
else
@ -300,12 +300,12 @@ env_parallel() {
}
parset() {
_parset_parallel_prg=parallel
_parset_PARALLEL_PRG=parallel
_parset_main "$@"
}
env_parset() {
_parset_parallel_prg=env_parallel
_parset_PARALLEL_PRG=env_parallel
_parset_main "$@"
}
@ -328,15 +328,22 @@ _parset_main() {
# parset "var_a4 var_b4 var_c4" echo ::: {1..3}
# echo $var_c4
_parset_name="$1"
if [ "$_parset_name" = "" ] ; then
_make_TEMP() {
# mktemp does not exist on some OS
perl -e 'use File::Temp qw(tempfile);
$ENV{"TMPDIR"} ||= "/tmp";
print((tempfile(DIR=>$ENV{"TMPDIR"}, TEMPLATE => "parXXXXX"))[1])'
}
_parset_NAME="$1"
if [ "$_parset_NAME" = "" ] ; then
echo parset: Error: No destination variable given. >&2
echo parset: Error: Try: >&2
echo parset: Error: ' ' parset myarray echo ::: foo bar >&2
return 255
fi
shift
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -ne 'chomp;for (split /[, ]/) {
# Allow: var_32 var[3]
if(not /^[a-zA-Z_][a-zA-Z_0-9]*(\[\d+\])?$/) {
@ -347,25 +354,30 @@ _parset_main() {
}
exit $exitval;
' || return 255
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
_exit_FILE=`_make_TEMP`
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_NAME" ; then
# $_parset_NAME contains , or space
# Split on , or space to get the names
eval "`
# Compute results into files
$_parset_parallel_prg --files -k "$@" |
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
# var1= cat tmpfile1; rm tmpfile1
# var2= cat tmpfile2; rm tmpfile2
parallel -q echo {2}='\`cat {1}; rm {1}\`' :::: - :::+ \`
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -pe 's/,/ /g'
\`
`"
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# Supported in: bash zsh ksh
# Arrays do not work in: ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
# $_parset_NAME does not contain , or space
# => $_parset_NAME is the name of the array to put data into
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_NAME=( $(
# Compute results into files. Save exit value
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "'
) )"
fi
return `cat "$_exit_FILE"; rm "$_exit_FILE"`
}

View file

@ -118,7 +118,7 @@ function env_parallel
# Generate commands to set scalar variables
# Keep the ones from --env
# Ignore the ones from ~/.parallel/ignored_vars
#
#
begin;
for v in (set -n | \
grep -Ev '^(PARALLEL_TMP)$' | \

View file

@ -48,7 +48,6 @@ env_parallel() {
typeset +p -f | perl -pe 's/\(\).*//'
}
_bodies_of_FUNCTIONS() {
# typeset -f "$@"
functions "$@"
}
_names_of_VARIABLES() {
@ -284,12 +283,12 @@ env_parallel() {
}
parset() {
_parset_parallel_prg=parallel
_parset_PARALLEL_PRG=parallel
_parset_main "$@"
}
env_parset() {
_parset_parallel_prg=env_parallel
_parset_PARALLEL_PRG=env_parallel
_parset_main "$@"
}
@ -312,15 +311,22 @@ _parset_main() {
# parset "var_a4 var_b4 var_c4" echo ::: {1..3}
# echo $var_c4
_parset_name="$1"
if [ "$_parset_name" = "" ] ; then
_make_TEMP() {
# mktemp does not exist on some OS
perl -e 'use File::Temp qw(tempfile);
$ENV{"TMPDIR"} ||= "/tmp";
print((tempfile(DIR=>$ENV{"TMPDIR"}, TEMPLATE => "parXXXXX"))[1])'
}
_parset_NAME="$1"
if [ "$_parset_NAME" = "" ] ; then
echo parset: Error: No destination variable given. >&2
echo parset: Error: Try: >&2
echo parset: Error: ' ' parset myarray echo ::: foo bar >&2
return 255
fi
shift
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -ne 'chomp;for (split /[, ]/) {
# Allow: var_32 var[3]
if(not /^[a-zA-Z_][a-zA-Z_0-9]*(\[\d+\])?$/) {
@ -331,25 +337,30 @@ _parset_main() {
}
exit $exitval;
' || return 255
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
_exit_FILE=`_make_TEMP`
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_NAME" ; then
# $_parset_NAME contains , or space
# Split on , or space to get the names
eval "`
eval "$(
# Compute results into files
$_parset_parallel_prg --files -k "$@" |
# var1= cat tmpfile1; rm tmpfile1
# var2= cat tmpfile2; rm tmpfile2
parallel -q echo {2}='\`cat {1}; rm {1}\`' :::: - :::+ \`
echo "$_parset_name" |
perl -pe 's/,/ /g'
\`
`"
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
# var1=`cat tmpfile1; rm tmpfile1`
# var2=`cat tmpfile2; rm tmpfile2`
parallel -q echo {2}='`cat {1}; rm {1}`' :::: - :::+ $(
echo "$_parset_NAME" | perl -pe 's/,/ /g'
)
);
"
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# Supported in: bash zsh ksh
# Arrays do not work in: ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
# $_parset_NAME does not contain , or space
# => $_parset_NAME is the name of the array to put data into
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_NAME=( $(
# Compute results into files. Save exit value
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "'
) )"
fi
return `cat "$_exit_FILE"; rm "$_exit_FILE"`
}

View file

@ -190,7 +190,7 @@ env_parallel() {
_error_PAR() {
echo "env_parallel: Error: $@" >&2
}
if _which_PAR parallel >/dev/null; then
true parallel found in path
else
@ -286,12 +286,12 @@ env_parallel() {
}
parset() {
_parset_parallel_prg=parallel
_parset_PARALLEL_PRG=parallel
_parset_main "$@"
}
env_parset() {
_parset_parallel_prg=env_parallel
_parset_PARALLEL_PRG=env_parallel
_parset_main "$@"
}
@ -314,15 +314,22 @@ _parset_main() {
# parset "var_a4 var_b4 var_c4" echo ::: {1..3}
# echo $var_c4
_parset_name="$1"
if [ "$_parset_name" = "" ] ; then
_make_TEMP() {
# mktemp does not exist on some OS
perl -e 'use File::Temp qw(tempfile);
$ENV{"TMPDIR"} ||= "/tmp";
print((tempfile(DIR=>$ENV{"TMPDIR"}, TEMPLATE => "parXXXXX"))[1])'
}
_parset_NAME="$1"
if [ "$_parset_NAME" = "" ] ; then
echo parset: Error: No destination variable given. >&2
echo parset: Error: Try: >&2
echo parset: Error: ' ' parset myarray echo ::: foo bar >&2
return 255
fi
shift
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -ne 'chomp;for (split /[, ]/) {
# Allow: var_32 var[3]
if(not /^[a-zA-Z_][a-zA-Z_0-9]*(\[\d+\])?$/) {
@ -333,25 +340,30 @@ _parset_main() {
}
exit $exitval;
' || return 255
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
_exit_FILE=`_make_TEMP`
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_NAME" ; then
# $_parset_NAME contains , or space
# Split on , or space to get the names
eval "`
eval "$(
# Compute results into files
$_parset_parallel_prg --files -k "$@" |
# var1= cat tmpfile1; rm tmpfile1
# var2= cat tmpfile2; rm tmpfile2
parallel -q echo {2}='\`cat {1}; rm {1}\`' :::: - :::+ \`
echo "$_parset_name" |
perl -pe 's/,/ /g'
\`
`"
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
# var1=`cat tmpfile1; rm tmpfile1`
# var2=`cat tmpfile2; rm tmpfile2`
parallel -q echo {2}='`cat {1}; rm {1}`' :::: - :::+ $(
echo "$_parset_NAME" | perl -pe 's/,/ /g'
)
);
"
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# $_parset_NAME does not contain , or space
# => $_parset_NAME is the name of the array to put data into
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
eval "$_parset_NAME=( $(
# Compute results into files. Save exit value
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "'
) )"
fi
return `cat "$_exit_FILE"; rm "$_exit_FILE"`
}

View file

@ -204,7 +204,7 @@ env_parallel() {
_error_PAR() {
echo "env_parallel: Error: $@" >&2
}
if _which_PAR parallel >/dev/null; then
true parallel found in path
else
@ -300,12 +300,12 @@ env_parallel() {
}
parset() {
_parset_parallel_prg=parallel
_parset_PARALLEL_PRG=parallel
_parset_main "$@"
}
env_parset() {
_parset_parallel_prg=env_parallel
_parset_PARALLEL_PRG=env_parallel
_parset_main "$@"
}
@ -328,15 +328,22 @@ _parset_main() {
# parset "var_a4 var_b4 var_c4" echo ::: {1..3}
# echo $var_c4
_parset_name="$1"
if [ "$_parset_name" = "" ] ; then
_make_TEMP() {
# mktemp does not exist on some OS
perl -e 'use File::Temp qw(tempfile);
$ENV{"TMPDIR"} ||= "/tmp";
print((tempfile(DIR=>$ENV{"TMPDIR"}, TEMPLATE => "parXXXXX"))[1])'
}
_parset_NAME="$1"
if [ "$_parset_NAME" = "" ] ; then
echo parset: Error: No destination variable given. >&2
echo parset: Error: Try: >&2
echo parset: Error: ' ' parset myarray echo ::: foo bar >&2
return 255
fi
shift
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -ne 'chomp;for (split /[, ]/) {
# Allow: var_32 var[3]
if(not /^[a-zA-Z_][a-zA-Z_0-9]*(\[\d+\])?$/) {
@ -347,25 +354,30 @@ _parset_main() {
}
exit $exitval;
' || return 255
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
_exit_FILE=`_make_TEMP`
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_NAME" ; then
# $_parset_NAME contains , or space
# Split on , or space to get the names
eval "`
# Compute results into files
$_parset_parallel_prg --files -k "$@" |
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
# var1= cat tmpfile1; rm tmpfile1
# var2= cat tmpfile2; rm tmpfile2
parallel -q echo {2}='\`cat {1}; rm {1}\`' :::: - :::+ \`
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -pe 's/,/ /g'
\`
`"
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# Supported in: bash zsh ksh
# Arrays do not work in: ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
# $_parset_NAME does not contain , or space
# => $_parset_NAME is the name of the array to put data into
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_NAME=( $(
# Compute results into files. Save exit value
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "'
) )"
fi
return `cat "$_exit_FILE"; rm "$_exit_FILE"`
}

View file

@ -181,7 +181,7 @@ env_parallel() {
_error_PAR() {
echo "env_parallel: Error: $@" >&2
}
if _which_PAR parallel >/dev/null; then
true parallel found in path
else
@ -277,12 +277,12 @@ env_parallel() {
}
parset() {
_parset_parallel_prg=parallel
_parset_PARALLEL_PRG=parallel
_parset_main "$@"
}
env_parset() {
_parset_parallel_prg=env_parallel
_parset_PARALLEL_PRG=env_parallel
_parset_main "$@"
}
@ -305,15 +305,22 @@ _parset_main() {
# parset "var_a4 var_b4 var_c4" echo ::: {1..3}
# echo $var_c4
_parset_name="$1"
if [ "$_parset_name" = "" ] ; then
_make_TEMP() {
# mktemp does not exist on some OS
perl -e 'use File::Temp qw(tempfile);
$ENV{"TMPDIR"} ||= "/tmp";
print((tempfile(DIR=>$ENV{"TMPDIR"}, TEMPLATE => "parXXXXX"))[1])'
}
_parset_NAME="$1"
if [ "$_parset_NAME" = "" ] ; then
echo parset: Error: No destination variable given. >&2
echo parset: Error: Try: >&2
echo parset: Error: ' ' parset myarray echo ::: foo bar >&2
return 255
fi
shift
echo "$_parset_name" |
echo "$_parset_NAME" |
perl -ne 'chomp;for (split /[, ]/) {
# Allow: var_32 var[3]
if(not /^[a-zA-Z_][a-zA-Z_0-9]*(\[\d+\])?$/) {
@ -324,25 +331,30 @@ _parset_main() {
}
exit $exitval;
' || return 255
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_name" ; then
# $_parset_name contains , or space
_exit_FILE=`_make_TEMP`
if perl -e 'exit not grep /,| /, @ARGV' "$_parset_NAME" ; then
# $_parset_NAME contains , or space
# Split on , or space to get the names
eval "`
eval "$(
# Compute results into files
$_parset_parallel_prg --files -k "$@" |
# var1= cat tmpfile1; rm tmpfile1
# var2= cat tmpfile2; rm tmpfile2
parallel -q echo {2}='\`cat {1}; rm {1}\`' :::: - :::+ \`
echo "$_parset_name" |
perl -pe 's/,/ /g'
\`
`"
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
# var1=`cat tmpfile1; rm tmpfile1`
# var2=`cat tmpfile2; rm tmpfile2`
parallel -q echo {2}='`cat {1}; rm {1}`' :::: - :::+ $(
echo "$_parset_NAME" | perl -pe 's/,/ /g'
)
);
"
else
# $_parset_name does not contain , or space
# => $_parset_name is the name of the array to put data into
# $_parset_NAME does not contain , or space
# => $_parset_NAME is the name of the array to put data into
# Supported in: bash zsh ksh mksh
# Arrays do not work in: sh ash dash
eval "$_parset_name=( $( $_parset_parallel_prg --files -k "$@" |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "' ) )"
eval "$_parset_NAME=( $(
# Compute results into files. Save exit value
($_parset_PARALLEL_PRG --files -k "$@"; echo $? > "$_exit_FILE") |
perl -pe 'chop;$_="\"\`cat $_; rm $_\`\" "'
) )"
fi
return `cat "$_exit_FILE"; rm "$_exit_FILE"`
}

View file

@ -36,7 +36,10 @@ run 1 second, suspend (3.00-1.00) seconds, run 1 second, suspend
=item B<--battery>
Suspend if the system is running on battery. Shorthand for: -l -1 --sensor 'cat /sys/class/power_supply/BAT0/status /proc/acpi/battery/BAT0/state 2>/dev/null |grep -i -q discharging; echo $?'
Suspend if the system is running on battery. Shorthand for:
-l -1 --sensor 'cat /sys/class/power_supply/BAT0/status
/proc/acpi/battery/BAT0/state 2>/dev/null | grep -i -q discharging;
echo $?'
=item B<-f> I<FACTOR>
@ -62,7 +65,7 @@ under the limits. The default is B<--soft>.
Limit for I/O. The amount of disk I/O will be computed as a value 0 -
10, where 0 is no I/O and 10 is at least one disk is 100% saturated.
B<--io> will set both B<--start-io> and B<run-io>.
B<--io> will set both B<--start-io> and B<--run-io>.
=item B<--load> I<loadlimit>
@ -71,7 +74,7 @@ B<--io> will set both B<--start-io> and B<run-io>.
Limit for load average.
B<--load> will set both B<--start-load> and B<run-load>.
B<--load> will set both B<--start-load> and B<--run-load>.
=item B<--mem> I<memlimit>
@ -87,7 +90,7 @@ I<memlimit> can be postfixed with K, M, G, T, or P which would
multiply the size with 1024, 1048576, 1073741824, or 1099511627776
respectively.
B<--mem> will set both B<--start-mem> and B<run-mem>.
B<--mem> will set both B<--start-mem> and B<--run-mem>.
=item B<--noswap>
@ -99,7 +102,7 @@ indication that the system is memory stressed.
B<--noswap> is over limit if the system is swapping both in and out.
B<--noswap> will set both B<--start-noswap> and B<run-noswap>.
B<--noswap> will set both B<--start-noswap> and B<--run-noswap>.
=item B<--net>
@ -251,18 +254,19 @@ CPU. When the load rises to 1.0 the process is suspended.
=head1 EXAMPLE: Run updatedb
Running updatedb can often starve the system for disk I/O and thus result in a high load.
Running B<updatedb> can often starve the system for disk I/O and thus result in a high load.
Run updatedb but suspend updatedb if the load is above 2.00:
Run B<updatedb> but suspend B<updatedb> if the load is above 2.00:
B<niceload -L 2 updatedb>
=head1 EXAMPLE: Run rsync
rsync can just like updatedb starve the system for disk I/O and thus result in a high load.
B<rsync> can, just like B<updatedb>, starve the system for disk I/O
and thus result in a high load.
Run rsync but keep load below 3.4. If load reaches 7 sleep for
Run B<rsync> but keep load below 3.4. If load reaches 7 sleep for
(7-3.4)*12 seconds:
B<niceload -L 3.4 -f 12 rsync -Ha /home/ /backup/home/>

View file

@ -1891,7 +1891,7 @@ sub open_joblog {
$/ = "\0";
}
# Replace \0 with '\n' as used in print_joblog()
print $outfh map { s/\0/\n/g; $_,$/ } @group;
print $outfh map { s/\0/\n/g; $_,$/ } map { $_ } @group;
seek $outfh, 0, 0;
exit_if_disk_full();
# Set filehandle to -a
@ -6760,9 +6760,10 @@ sub sct_aix() {
close $in_fh;
}
}
$cpu->{'sockets'} ||= $cpu->{'cores'};
if(grep { /\d/ } values %$cpu) {
# BUG It is not not known how to calculate this
$cpu->{'sockets'} = 1;
return $cpu;
} else {
return undef;
@ -6779,10 +6780,13 @@ sub sct_hpux() {
my $cpu;
$cpu->{'cores'} =
::qqx(qq{ /usr/bin/mpsched -s 2>&1 | grep 'Locality Domain Count' | awk '{ print \$4 }'});
chomp($cpu->{'cores'});
$cpu->{'threads'} =
::qqx(qq{ /usr/bin/mpsched -s 2>&1 | perl -ne '/Processor Count\\D+(\\d+)/ and print "\$1\n"'});
::qqx(qq{ /usr/bin/mpsched -s 2>&1 | perl -ne '/Processor Count\\D+(\\d+)/ and print "\$1"'});
if(grep { /\d/ } values %$cpu) {
# BUG It is not not known how to calculate this
$cpu->{'sockets'} = 1;
return $cpu;
} else {
return undef;

View file

@ -4,21 +4,23 @@
=head1 NAME
parallel - build and execute shell command lines from standard input in parallel
parallel - build and execute shell command lines from standard input
in parallel
=head1 SYNOPSIS
B<parallel> [options] [I<command> [arguments]] < list_of_arguments
B<parallel> [options] [I<command> [arguments]] ( B<:::> arguments | B<:::+> arguments |
B<::::> argfile(s) | B<::::+> argfile(s) ) ...
B<parallel> [options] [I<command> [arguments]] ( B<:::> arguments |
B<:::+> arguments | B<::::> argfile(s) | B<::::+> argfile(s) ) ...
B<parallel> --semaphore [options] I<command>
B<#!/usr/bin/parallel> --shebang [options] [I<command> [arguments]]
B<#!/usr/bin/parallel> --shebang-wrap [options] [I<command> [arguments]]
B<#!/usr/bin/parallel> --shebang-wrap [options] [I<command>
[arguments]]
=head1 DESCRIPTION
@ -118,7 +120,7 @@ replacement string; then the string is not quoted.
Input line without extension. This replacement string will be replaced
by the input with the extension removed. If the input line contains
B<.> after the last B</> the last B<.> till the end of the string will
B<.> after the last B</>, the last B<.> until the end of the string will
be removed and B<{.}> will be replaced with the
remaining. E.g. I<foo.jpg> becomes I<foo>, I<subdir/foo.jpg> becomes
I<subdir/foo>, I<sub.dir/foo.jpg> becomes I<sub.dir/foo>,
@ -659,7 +661,7 @@ equivalent: B<--delay 100000> and B<--delay 1d3.5h16.6m4s>.
Print the job to run on stdout (standard output), but do not run the
job. Use B<-v -v> to include the wrapping that GNU Parallel generates
(for remote jobs, B<--tmux>, B<--nice>, B<--pipe>, B<--pipepart>,
B<--fifo> and B<--cat>). Do not count on this literaly, though, as the
B<--fifo> and B<--cat>). Do not count on this literally, though, as the
job may be scheduled on another computer or the local computer if : is
in the list.
@ -773,7 +775,7 @@ may not be used. B<--gnu> is kept for compatibility.
=item B<--group>
Group output. Output from each job is grouped together and is only
printed when the command is finished. stdout (standard output) first
printed when the command is finished. Stdout (standard output) first
followed by stderr (standard error).
This takes in the order of 0.5ms per job and depends on the speed of
@ -855,7 +857,7 @@ exit when 3% of the jobs have finished. Kill running jobs.
=back
For backwards compability these also work:
For backwards compatibility these also work:
=over 12
@ -3052,11 +3054,11 @@ B<{=> and B<=}> mark a perl expression. B<pQ> perl-quotes the
string. B<date +%FT%T> is the date in ISO8601 with time.
=head1 EXAMPLE: Digtal clock with "blinking" :
=head1 EXAMPLE: Digital clock with "blinking" :
The : in a digital clock blinks. To make every other line have a ':'
and the rest a ' ' a perl expression is used to look at the 3rd input
source. If the value modudo 2 is 1: Use ":" otherwise use " ":
source. If the value modulo 2 is 1: Use ":" otherwise use " ":
parallel -k echo {1}'{=3 $_=$_%2?":":" "=}'{2}{3} \
::: {0..12} ::: {0..5} ::: {0..9}

View file

@ -205,7 +205,7 @@ composed commands and redirection require using B<bash -c>.
ls | parallel "wc {} >{}.wc"
ls | parallel "echo {}; ls {}|wc"
becomes (assuming you have 8 cores and that none of the file names
becomes (assuming you have 8 cores and that none of the filenames
contain space, " or ').
ls | xargs -d "\n" -P8 -I {} bash -c "wc {} >{}.wc"
@ -216,9 +216,9 @@ https://www.gnu.org/software/findutils/
=head2 DIFFERENCES BETWEEN find -exec AND GNU Parallel
B<find -exec> offer some of the same possibilities as GNU B<parallel>.
B<find -exec> offers some of the same possibilities as GNU B<parallel>.
B<find -exec> only works on files. So processing other input (such as
B<find -exec> only works on files. Processing other input (such as
hosts or URLs) will require creating these inputs as files. B<find
-exec> has no support for running commands in parallel.
@ -228,13 +228,13 @@ https://www.gnu.org/software/findutils/
=head2 DIFFERENCES BETWEEN make -j AND GNU Parallel
B<make -j> can run jobs in parallel, but requires a crafted Makefile
to do this. That results in extra quoting to get filename containing
newline to work correctly.
to do this. That results in extra quoting to get filenames containing
newlines to work correctly.
B<make -j> computes a dependency graph before running jobs. Jobs run
by GNU B<parallel> does not depend on eachother.
by GNU B<parallel> does not depend on each other.
(Very early versions of GNU B<parallel> were coincidently implemented
(Very early versions of GNU B<parallel> were coincidentally implemented
using B<make -j>).
https://www.gnu.org/software/make/
@ -250,10 +250,10 @@ into files.
The argument replace string ($ITEM) cannot be changed. Arguments must
be quoted - thus arguments containing special characters (space '"&!*)
may cause problems. More than one argument is not supported. File
names containing newlines are not processed correctly. When reading
input from a file null cannot be used as a terminator. B<ppss> needs
to read the whole input file before starting any jobs.
may cause problems. More than one argument is not supported. Filenames
containing newlines are not processed correctly. When reading input
from a file null cannot be used as a terminator. B<ppss> needs to read
the whole input file before starting any jobs.
Output and status information is stored in ppss_dir and thus requires
cleanup when completed. If the dir is not removed before running
@ -615,7 +615,7 @@ https://github.com/cheusov/paexec
B<map> sees it as a feature to have less features and in doing so it
also handles corner cases incorrectly. A lot of GNU B<parallel>'s code
is to handle corner cases correctly on every platform, so you will not
get a nasty surprise if a user for example saves a file called: I<My
get a nasty surprise if a user, for example, saves a file called: I<My
brother's 12" records.txt>
B<map>'s example showing how to deal with special characters fails on
@ -756,7 +756,7 @@ B<jobflow> can run multiple jobs in parallel.
Just like B<xargs> output from B<jobflow> jobs running in parallel mix
together by default. B<jobflow> can buffer into files (placed in
/run/shm), but these are not cleaned up - not even if B<jobflow> dies
unexpectently. If the total output is big (in the order of RAM+swap)
unexpectedly. If the total output is big (in the order of RAM+swap)
it can cause the system to run out of memory.
B<jobflow> gives no error if the command is unknown, and like B<xargs>
@ -897,7 +897,7 @@ These do something different from GNU B<parallel>
Rust parallel has no remote facilities.
It uses /tmp/parallel for tmp files and does not clean up if
terminated abrubtly. If another user on the system uses Rust parallel,
terminated abruptly. If another user on the system uses Rust parallel,
then /tmp/parallel will have the wrong permissions and Rust parallel
will fail. A malicious user can setup the right permissions and
symlink the output file to one of the user's files and next time the
@ -1112,7 +1112,7 @@ B<15. Interrupt jobs by `Ctrl-C`, rush will stop unfinished commands and exit.>
^C
B<16. Continue/resume jobs (`-c`). When some jobs failed (by
execution failure, timeout, or cancelling by user with `Ctrl + C`),
execution failure, timeout, or canceling by user with `Ctrl + C`),
please switch flag `-c/--continue` on and run again, so that `rush`
can save successful commands and ignore them in I<NEXT> run.>
@ -1144,7 +1144,7 @@ Multi-line jobs:
B<17. A comprehensive example: downloading 1K+ pages given by
three URL list files using `phantomjs save_page.js` (some page
contents are dynamicly generated by Javascript, so `wget` does not
contents are dynamically generated by Javascript, so `wget` does not
work). Here I set max jobs number (`-j`) as `20`, each job has a max
running time (`-t`) of `60` seconds and `3` retry changes
(`-r`). Continue flag `-c` is also switched on, so we can continue
@ -1298,7 +1298,7 @@ double space, ' and ":
=item * Commands of multi-lines
While you I<can> use multi-lined commands in GNU B<parallel>, to
improve readibilty GNU B<parallel> discourages the use of multi-line
improve readability GNU B<parallel> discourages the use of multi-line
commands. In most cases it can be written as a function:
seq 1 3 |
@ -1376,7 +1376,7 @@ It can be emulated with GNU B<parallel> using this Bash function:
parallel $(_cmds "$@")'|| echo exit status $?' ::: */
}
This works execpt for the B<--exclude> option.
This works except for the B<--exclude> option.
=head2 DIFFERENCES BETWEEN pyargs AND GNU Parallel
@ -1432,7 +1432,7 @@ The output is prepended with the job number, and may be incomplete:
7165
When pretty printing it caches output in memory. Output mixes by using
test MIX below wether or not output is cached.
test MIX below whether or not output is cached.
There seems to be no way of making a template command and have
B<concurrently> fill that with different args. The full commands must
@ -1457,7 +1457,7 @@ B<map> itself, the output also mixes:
seq 10 | map i 'echo start-$i && sleep 0.$i && echo end-$i &'
The major difference is that GNU B<parallel> is build for parallelization
The major difference is that GNU B<parallel> is built for parallelization
and map is not. So GNU B<parallel> has lots of ways of dealing with the
issues that parallelization raises:
@ -1490,7 +1490,7 @@ Here are the 5 examples converted to GNU Parallel:
4$ printf "1\n1\n1\n" | map t 'sleep $t && say done'
4$ printf "1\n1\n1\n" | parallel 'sleep {} && say done'
4$ paralllel 'sleep {} && say done' ::: 1 1 1
4$ parallel 'sleep {} && say done' ::: 1 1 1
5$ printf "1\n1\n1\n" | map t 'sleep $t && say done &'
5$ printf "1\n1\n1\n" | parallel -j0 'sleep {} && say done'

View file

@ -15,7 +15,7 @@ situations, and to avoid overloading you with information, the most
used features are presented first.
All the examples are tested in Bash, and most will work in other
shells, too, but there are a few exceptions. So you are recommened to
shells, too, but there are a few exceptions. So you are recommended to
use Bash while testing out the examples.
@ -209,8 +209,8 @@ If the input is B<mydir/mysubdir/myfile.myext> then:
{#} = the sequence number of the job
{%} = the job slot number
When a job is started it gets sequence number that starts at 1 and
increases with 1 for each new job. The job also gets assigned a slot
When a job is started it gets a sequence number that starts at 1 and
increases by 1 for each new job. The job also gets assigned a slot
number. This number is from 1 to the number of jobs running in
parallel. It is unique between the running jobs, but is re-used as
soon as a job finishes.
@ -349,7 +349,7 @@ A shorthand for B<--transfer --return {} --cleanup> is B<--trc {}>.
=head1 Advanced usage
parset fifo, cmd substtition, arrayelements, array with var names and cmds, env_parset
parset fifo, cmd substitution, arrayelements, array with var names and cmds, env_parset
env_parallel
@ -382,11 +382,11 @@ Interfacing with HTML/?
=head2 Remote execution
seq 10 | parallel --sshlogin 'ssh -i "key.pem" a@b.com' echo
seq 10 | parallel --sshlogin 'ssh -i "key.pem" a@b.com' echo
seq 10 | PARALLLEL_SSH='ssh -i "key.pem"' parallel --sshlogin a@b.com echo
seq 10 | PARALLEL_SSH='ssh -i "key.pem"' parallel --sshlogin a@b.com echo
seq 10 | parallel --ssh 'ssh -i "key.pem"' --sshlogin a@b.com echo
seq 10 | parallel --ssh 'ssh -i "key.pem"' --sshlogin a@b.com echo
ssh-agent

View file

@ -213,10 +213,10 @@ error (stderr).
GNU B<parallel> pipes output from the command run into the compression
program which saves to a tmpfile. GNU B<parallel> records the pid of
the compress program. At the same time a small perl script (called
the compress program. At the same time a small Perl script (called
B<cattail> above) is started: It basically does B<cat> followed by
B<tail -f>, but it also removes the tmpfile as soon as the first byte
is read, and it continously checks if the pid of the compression
is read, and it continuously checks if the pid of the compression
program is dead. If the compress program is dead, B<cattail> reads the
rest of tmpfile and exits.
@ -539,7 +539,7 @@ needs to know how to read the function.
From version 20150122 GNU B<parallel> tries both the ()-version and
the %%-version, and the function definition works on both pre- and
post-shellshock versions of B<bash>.
post-shell shock versions of B<bash>.
=head2 The remote system wrapper
@ -1183,7 +1183,7 @@ software, username, password, host, port, database, and table in a
single string.
The DBURL must point to a table name. The table will be dropped and
created. The reason for not reusing an exising table is that the user
created. The reason for not reusing an existing table is that the user
may have added more input sources which would require more columns in
the table. By prepending '+' to the DBURL the table will not be
dropped.
@ -1239,7 +1239,7 @@ instead? See a list in: B<man parallel_alternatives>.
=head2 Multiple processes working together
Open3 is slow. Printing is slow. It would be good if they did not tie
up ressources, but were run in separate threads.
up resources, but were run in separate threads.
=head2 --rrs on remote using a perl wrapper

View file

@ -2906,7 +2906,7 @@ Output:
=head2 Timeout
With B<--semaphoretimeout> you can force running the command anyway after
a period (postive number) or give up (negative number):
a period (positive number) or give up (negative number):
sem --id foo -u 'echo Slow started; sleep 5; echo Slow ended' &&
sem --id foo --semaphoretimeout 1 'echo Forced running after 1 sec' &&

View file

@ -9,6 +9,9 @@ ping -c 1 freebsd7.tange.dk >/dev/null 2>&1
ssh freebsd7.tange.dk touch .parallel/will-cite
scp -q .*/src/{parallel,sem,sql,niceload,env_parallel*} freebsd7.tange.dk:bin/
. `which env_parallel.bash`
env_parallel --session
par_no_more_procs() {
echo 'bug #40136: FreeBSD: No more processes'
sem --jobs 3 --id my_id -u 'echo First started; sleep 10; echo The first finished;echo' &&
@ -59,17 +62,17 @@ par_shebang() {
}
par_shellshock_bug() {
bash -c 'echo bug \#43358: shellshock breaks exporting functions using --env _;
bash -c 'echo bug \#43358: shellshock breaks exporting functions using --env name;
echo Non-shellshock-hardened to non-shellshock-hardened;
funky() { echo Function $1; };
export -f funky;
PARALLEL_SHELL=bash parallel --env funky -S localhost funky ::: non-shellshock-hardened'
bash -c 'echo bug \#43358: shellshock breaks exporting functions using --env _;
bash -c 'echo bug \#43358: shellshock breaks exporting functions using --env name;
echo Non-shellshock-hardened to shellshock-hardened;
funky() { echo Function $1; };
export -f funky;
parallel --env funky -S parallel@192.168.1.72 funky ::: shellshock-hardened'
PARALLEL_SHELL=bash parallel --env funky -S parallel@192.168.1.72 funky ::: shellshock-hardened'
}
par_load() {
@ -104,7 +107,7 @@ unset TMPDIR
# we get 'shopt'-errors and 'declare'-errors.
# We can safely ignore those.
env_parallel --env _ -vj9 -k --joblog /tmp/jl-`basename $0` --retries 3 \
PARALLEL_SHELL=sh env_parallel --env _ -vj9 -k --joblog /tmp/jl-`basename $0` --retries 3 \
-S freebsd7.tange.dk --tag '{} 2>&1' \
::: $(compgen -A function | grep par_ | sort) \
2> >(grep -Ev 'shopt: not found|declare: not found')

View file

@ -24,6 +24,7 @@ par_exit_code() {
OK="ash bash csh dash fish mksh posh rc sash sh static-sh tcsh"
BAD="fdsh fizsh ksh ksh93 yash zsh"
s=100
rm -f /tmp/mysleep
cp /bin/sleep /tmp/mysleep
echo '# Ideally the command should return the same'

View file

@ -197,13 +197,13 @@ par_parcat_mixing() {
slow_output() {
string=$1
perl -e 'print "'$string'"x9000,"start\n"'
sleep 4
sleep 6
perl -e 'print "'$string'"x9000,"end\n"'
}
tmp1=$(mktmpfifo)
tmp2=$(mktmpfifo)
slow_output a > $tmp1 &
sleep 2
sleep 3
slow_output b > $tmp2 &
parcat $tmp1 $tmp2 | tr -s ab
}

View file

@ -120,8 +120,11 @@ par_empty() {
true;
}
hostname=`hostname`
export -f $(compgen -A function | egrep 'p_|par_')
# Tested that -j0 in parallel is fastest (up to 15 jobs)
compgen -A function | grep par_ | sort |
stdout parallel -vj5 -k --tag --joblog /tmp/jl-`basename $0` p_wrapper \
:::: - ::: \$MYSQL \$PG \$SQLITE | perl -pe 's/tbl\d+/TBL99999/gi'
:::: - ::: \$MYSQL \$PG \$SQLITE | perl -pe 's/tbl\d+/TBL99999/gi;' |
perl -pe 's/(from TBL99999 order) .*/$1/g' |
perl -pe "s/$hostname/hostname/g"

View file

@ -2032,6 +2032,10 @@ par_ash_parset() {
# env_parset 'myarray[6],myarray[5],myarray[4]' myfun ::: baz bar foo
# echo "${myarray[*]}"
# echo "${myarray[4]} ${myarray[5]} ${myarray[6]}"
parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
env_parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
_EOF
)
ssh ash@lo "$myscript"
@ -2086,6 +2090,10 @@ par_bash_parset() {
env_parset 'myarray[6],myarray[5],myarray[4]' myfun ::: baz bar foo
echo "${myarray[*]}"
echo "${myarray[4]} ${myarray[5]} ${myarray[6]}"
parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
env_parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
_EOF
)
ssh bash@lo "$myscript"
@ -2149,6 +2157,10 @@ par_dash_parset() {
# env_parset 'myarray[6],myarray[5],myarray[4]' myfun ::: baz bar foo
# echo "${myarray[*]}"
# echo "${myarray[4]} ${myarray[5]} ${myarray[6]}"
parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
env_parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
_EOF
)
ssh dash@lo "$myscript"
@ -2207,6 +2219,10 @@ par_ksh_parset() {
env_parset 'myarray[6],myarray[5],myarray[4]' myfun ::: baz bar foo
echo "${myarray[*]}"
echo "${myarray[4]} ${myarray[5]} ${myarray[6]}"
parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
env_parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
_EOF
)
ssh ksh@lo "$myscript"
@ -2261,6 +2277,10 @@ par_mksh_parset() {
env_parset 'myarray[6],myarray[5],myarray[4]' myfun ::: baz bar foo
echo "${myarray[*]}"
echo "${myarray[4]} ${myarray[5]} ${myarray[6]}"
parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
env_parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
_EOF
)
ssh mksh@lo "$myscript"
@ -2343,6 +2363,10 @@ par_sh_parset() {
# env_parset 'myarray[6],myarray[5],myarray[4]' myfun ::: baz bar foo
# echo "${myarray[*]}"
# echo "${myarray[4]} ${myarray[5]} ${myarray[6]}"
parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
env_parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
_EOF
)
ssh sh@lo "$myscript"
@ -2409,6 +2433,10 @@ par_zsh_parset() {
env_parset 'myarray[6],myarray[5],myarray[4]' myfun ::: baz bar foo
echo "${myarray[*]}"
echo "${myarray[4]} ${myarray[5]} ${myarray[6]}"
parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
env_parset a,b,c 'echo {};exit {}' ::: 0 1 1 0
echo Exit value 2 = $?
_EOS`"
_EOF
)

View file

@ -5,24 +5,21 @@ unset TIMEOUT
. `which env_parallel.bash`
env_parallel --session
P_ALL="qnx pidora alpha tru64 hpux-ia64 syllable raspbian solaris openindiana aix hpux debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax ultrix minix irix hurd beaglebone cubieboard2"
# P_NOTWORKING="vax alpha openstep"
# P_NOTWORKING_YET="ultrix irix"
#
# P_WORKING="openbsd tru64 debian freebsd redhat netbsd macosx miros centos unixware pidora ubuntu scosysv raspbian solaris-x86 aix mandriva debian-ppc suse solaris hpux openindiana hpux-ia64"
# P_WORKING="openbsd tru64 debian redhat netbsd macosx miros centos unixware pidora scosysv raspbian solaris-x86 aix mandriva debian-ppc suse solaris hpux hurd freebsd ubuntu openindiana"
# P_TEMPORARILY_BROKEN="minix dragonfly hpux-ia64 beaglebone cubieboard2"
P_ALL="alpha tru64 hpux-ia64 syllable pidora raspbian solaris openindiana aix hpux qnx debian-ppc suse solaris-x86 mandriva ubuntu scosysv unixware centos miros macosx redhat netbsd openbsd freebsd debian dragonfly vax ultrix minix irix hurd beaglebone cubieboard2"
P_NOTWORKING="vax alpha openstep"
P_NOTWORKING_YET="ultrix irix"
P_WORKING="openbsd tru64 debian freebsd redhat netbsd macosx miros centos unixware pidora ubuntu scosysv raspbian solaris-x86 aix mandriva debian-ppc suse solaris hpux openindiana hpux-ia64"
P_WORKING="openbsd tru64 debian redhat netbsd macosx miros centos unixware pidora scosysv raspbian solaris-x86 aix mandriva debian-ppc suse solaris hpux hurd freebsd ubuntu openindiana"
P_TEMPORARILY_BROKEN="minix dragonfly hpux-ia64 beaglebone cubieboard2"
P="$P_WORKING"
POLAR=`parallel -k echo {}.polarhome.com ::: $P`
S_POLAR=`parallel -k echo -S 1/{}.polarhome.com ::: $P`
P="$P_ALL"
# 2018-04-22 MAXTIME=20
MAXTIME=25
RETRIES=4
parallel --retries $RETRIES rsync -a /usr/local/bin/{parallel,env_parallel,env_parallel.*,parcat} ::: redhat.polarhome.com:bin/
parallel --retries $RETRIES rsync -a /usr/local/bin/{parallel,env_parallel,env_parallel.*,parcat} ::: ubuntu.polarhome.com:bin/
doit() {
# Avoid the stupid /etc/issue.net banner at Polarhome: -oLogLevel=quiet
@ -30,8 +27,13 @@ doit() {
export PARALLEL_SSH
export MAXTIME
export RETRIES
echo MAXTIME=$MAXTIME RETRIES=$RETRIES
echo '### Filter out working servers'
POLAR="`bin/parallel -j0 -k --retries $RETRIES --timeout $MAXTIME $PARALLEL_SSH {} echo {} ::: $P`"
S_POLAR=`bin/parallel -j0 -k --retries $RETRIES --timeout $MAXTIME echo -S 1/{} ::: $POLAR`
copy() {
# scp, but atomic (avoid half files if disconnected)
host=$1
@ -43,19 +45,24 @@ doit() {
export -f copy
par_nonall() {
parallel -j15 -k --retries $RETRIES --timeout $MAXTIME --delay 0.1 --tag \
parallel -j150 -k --retries $RETRIES --timeout $MAXTIME --delay 0.1 --tag \
--nonall $S_POLAR --argsep ,:- \
'source setupenv >&/dev/null || . `pwd`/setupenv;' "$@"
}
export -f par_nonall
echo '### Copy commands to servers'
parallel -vkj15 --retries $RETRIES --timeout $MAXTIME --delay 0.03 --tag \
parallel -vkj150 --retries $RETRIES --timeout $MAXTIME --delay 0.03 --tag \
copy {2} {1} {1/} \
::: bin/{parallel,env_parallel,env_parallel.*,parcat,stdout} \
::: bin/{parallel,env_parallel,env_parallel.*[^~],parcat,stdout} \
::: $POLAR
echo Done copying
echo
echo '### Works on ...'
echo
par_nonall parallel echo Works on {} ::: '`hostname`' 2>&1
# Test empty command
test_empty_cmd() {
echo '### Test if empty command in process list causes problems'
@ -65,7 +72,9 @@ doit() {
export -f test_empty_cmd
PARALLEL='--env test_empty_cmd' par_nonall test_empty_cmd 2>&1
par_nonall parallel echo Works on {} ::: '`hostname`' 2>&1
echo
echo '### Fails if tmpdir is R/O'
echo
par_nonall "stdout parallel --tmpdir / echo ::: test read-only tmp |" \
"perl -pe '\$exit += s:/[a-z0-9_]+.arg:/XXXXXXXX.arg:gi; \$exit += s/[0-9][0-9][0-9][0-9]/0000/gi; END { exit not \$exit }' &&" \
"echo OK readonly tmp" 2>&1
@ -96,7 +105,7 @@ doit() {
echo
echo '### env_parallel echo :::: <(echo OK)'
echo '(bash ksh zsh only)'
echo '(bash ksh mksh zsh only)'
echo
par_nonall 'bin/env_parallel --install && echo install-OK' 2>&1
par_nonall 'env_parallel echo env_parallel ::: run-OK' 2>&1
@ -106,7 +115,7 @@ doit() {
echo
echo '### parset arr seq ::: 2 3 4'
echo '(bash ksh zsh only)'
echo '(bash ksh mksh zsh only)'
echo
par_nonall 'parset arr seq ::: 2 3 4; echo ${arr[*]}' 2>&1
echo '### env_parset arr seq ::: 2 3 4'
@ -114,14 +123,14 @@ doit() {
echo
echo '### parset var1,var2,var3 seq ::: 2 3 4'
echo '(bash ksh zsh ash dash only)'
echo '(bash ksh mksh zsh ash dash only)'
echo
par_nonall 'parset var1,var2,var3 seq ::: 2 3 4; echo $var1,$var2,$var3' 2>&1
echo '### env_parset var1,var2,var3 seq ::: 2 3 4'
par_nonall 'start=2; env_parset var1,var2,var3 seq \$start ::: 2 3 4; echo $var1,$var2,$var3' 2>&1
}
env_parallel -u -Sredhat.polarhome.com doit ::: 1
env_parallel -u -Subuntu.polarhome.com doit ::: 1
# eval 'myfunc() { echo '$(perl -e 'print "x"x20000')'; }'
# env_parallel myfunc ::: a | wc # OK

View file

@ -123,7 +123,7 @@ stdout ssh $SSHLOGIN1 ls 'tmp/parallel.file*' || echo OK
stdout ssh $SSHLOGIN2 ls 'tmp/parallel.file*' || echo OK
echo 'Input for ssh'
cat /tmp/myssh1-run /tmp/myssh2-run | perl -pe 's/(PID.)\d+/${1}00000/g;s/(SEQ[ =]|line)\d/$1X/g;' |
perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-zA-Z0-9/\\+=]{500,}:base64:;'
perl -pe 's/\S*parallel-server\S*/one-server/;s:\S[a-zA-Z0-9/\\+=]{500,}\S:base64:;'
rm /tmp/myssh1-run /tmp/myssh2-run
rm -rf /tmp/parallel.file*

View file

@ -3,7 +3,7 @@
SERVER1=parallel-server1
SERVER2=parallel-server2
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | parallel -vj10 -k --joblog /tmp/jl-`basename $0` -L1 | perl -pe 's/(PARALLEL_PID....)\d+/$1XXXXX/g'
echo '### Test --return of weirdly named file'
stdout parallel --return {} -vv -S parallel\@$SERVER1 echo '>'{} ::: 'aa<${#}" b' |
perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'; rm 'aa<${#}" b'

View file

@ -64,10 +64,9 @@ par_shebang with
par_shebang /usr/bin/perl -w ./shebang-wrap-opt options
par_shebang options
par_shellshock_bug par_shellshock_bug 2>&1
par_shellshock_bug bug #43358: shellshock breaks exporting functions using --env _
par_shellshock_bug bug #43358: shellshock breaks exporting functions using --env name
par_shellshock_bug Non-shellshock-hardened to non-shellshock-hardened
par_shellshock_bug Function non-shellshock-hardened
par_shellshock_bug bug #43358: shellshock breaks exporting functions using --env _
par_shellshock_bug bug #43358: shellshock breaks exporting functions using --env name
par_shellshock_bug Non-shellshock-hardened to shellshock-hardened
par_shellshock_bug parallel: Warning: Shell functions may not be supported in /bin/sh.
par_shellshock_bug Function shellshock-hardened

View file

@ -1,503 +0,0 @@
### Test installation missing pod2*
make[0]: Entering directory '~/privat/parallel'
make dist-gzip am__post_remove_distdir='@:'
make[0]: Entering directory '~/privat/parallel'
if test -d "parallel-00000000"; then find "parallel-00000000" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "parallel-00000000" || { sleep 5 && rm -rf "parallel-00000000"; }; else :; fi
test -d "parallel-00000000" || mkdir "parallel-00000000"
(cd src && make top_distdir=../parallel-00000000 distdir=../parallel-00000000/src \
am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
make[0]: Entering directory '~/privat/parallel/src'
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_design.pod > ./parallel_design.7n \
&& mv ./parallel_design.7n ./parallel_design.7 \
|| echo "Warning: pod2man not found. Using old parallel_design.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_design.7
make[0]: Leaving directory '~/privat/parallel/src'
test -n "" \
|| find "parallel-00000000" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec /bin/bash ~/privat/parallel/install-sh -c -m a+r {} {} \; \
|| chmod -R a+r "parallel-00000000"
tardir=parallel-00000000 && ${TAR-tar} chof - "$tardir" | GZIP=--best gzip -c >parallel-00000000.tar.gz
make[0]: Leaving directory '~/privat/parallel'
if test -d "parallel-00000000"; then find "parallel-00000000" -type d ! -perm -200 -exec chmod u+w {} ';' && rm -rf "parallel-00000000" || { sleep 5 && rm -rf "parallel-00000000"; }; else :; fi
make[0]: Leaving directory '~/privat/parallel'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether ln -s works... yes
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating config.h
Making install in src
make[0]: Entering directory '/tmp/parallel-00000000/src'
pod2man --release='00000000' --center='parallel' \
--section=1 ./parallel.pod > ./parallel.1n \
&& mv ./parallel.1n ./parallel.1 \
|| echo "Warning: pod2man not found. Using old parallel.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./env_parallel.pod > ./env_parallel.1n \
&& mv ./env_parallel.1n ./env_parallel.1 \
|| echo "Warning: pod2man not found. Using old env_parallel.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old env_parallel.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./sem.pod > ./sem.1n \
&& mv ./sem.1n ./sem.1 \
|| echo "Warning: pod2man not found. Using old sem.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old sem.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./sql > ./sql.1n \
&& mv ./sql.1n ./sql.1 \
|| echo "Warning: pod2man not found. Using old sql.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old sql.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./niceload.pod > ./niceload.1n \
&& mv ./niceload.1n ./niceload.1 \
|| echo "Warning: pod2man not found. Using old niceload.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old niceload.1
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_tutorial.pod > ./parallel_tutorial.7n \
&& mv ./parallel_tutorial.7n ./parallel_tutorial.7 \
|| echo "Warning: pod2man not found. Using old parallel_tutorial.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_tutorial.7
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_book.pod > ./parallel_book.7n \
&& mv ./parallel_book.7n ./parallel_book.7 \
|| echo "Warning: pod2man not found. Using old parallel_book.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_book.7
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_design.pod > ./parallel_design.7n \
&& mv ./parallel_design.7n ./parallel_design.7 \
|| echo "Warning: pod2man not found. Using old parallel_design.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_design.7
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_alternatives.pod > ./parallel_alternatives.7n \
&& mv ./parallel_alternatives.7n ./parallel_alternatives.7 \
|| echo "Warning: pod2man not found. Using old parallel_alternatives.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_alternatives.7
pod2man --release='00000000' --center='parallel' \
--section=1 ./parcat.pod > ./parcat.1n \
&& mv ./parcat.1n ./parcat.1 \
|| echo "Warning: pod2man not found. Using old parcat.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parcat.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./parset.pod > ./parset.1n \
&& mv ./parset.1n ./parset.1 \
|| echo "Warning: pod2man not found. Using old parset.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parset.1
pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
&& mv ./parallel.htmln ./parallel.html \
|| echo "Warning: pod2html not found. Using old parallel.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel with environment" ./env_parallel.pod > ./env_parallel.htmln \
&& mv ./env_parallel.htmln ./env_parallel.html \
|| echo "Warning: pod2html not found. Using old env_parallel.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old env_parallel.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
&& mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
|| echo "Warning: pod2html not found. Using old parallel_tutorial.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel_tutorial.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel book" ./parallel_book.pod > ./parallel_book.htmln \
&& mv ./parallel_book.htmln ./parallel_book.html \
|| echo "Warning: pod2html not found. Using old parallel_book.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel_book.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel design" ./parallel_design.pod > ./parallel_design.htmln \
&& mv ./parallel_design.htmln ./parallel_design.html \
|| echo "Warning: pod2html not found. Using old parallel_design.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel_design.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel alternatives" ./parallel_alternatives.pod > ./parallel_alternatives.htmln \
&& mv ./parallel_alternatives.htmln ./parallel_alternatives.html \
|| echo "Warning: pod2html not found. Using old parallel_alternatives.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel_alternatives.html
rm -f ./pod2htm*
pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
&& mv ./sem.htmln ./sem.html \
|| echo "Warning: pod2html not found. Using old sem.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old sem.html
rm -f ./pod2htm*
pod2html --title "GNU SQL" ./sql > ./sql.htmln \
&& mv ./sql.htmln ./sql.html \
|| echo "Warning: pod2html not found. Using old sql.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old sql.html
rm -f ./pod2htm*
pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
&& mv ./niceload.htmln ./niceload.html \
|| echo "Warning: pod2html not found. Using old niceload.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old niceload.html
rm -f ./pod2htm*
pod2html --title "GNU parcat" ./parcat.pod > ./parcat.htmln \
&& mv ./parcat.htmln ./parcat.html \
|| echo "Warning: pod2html not found. Using old parcat.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parcat.html
rm -f ./pod2htm*
pod2html --title "GNU parset" ./parset.pod > ./parset.htmln \
&& mv ./parset.htmln ./parset.html \
|| echo "Warning: pod2html not found. Using old parset.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parset.html
rm -f ./pod2htm*
pod2texi --output=./parallel.texi ./parallel.pod \
|| echo "Warning: pod2texi not found. Using old parallel.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel.texi
pod2texi --output=./env_parallel.texi ./env_parallel.pod \
|| echo "Warning: pod2texi not found. Using old env_parallel.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old env_parallel.texi
pod2texi --output=./sem.texi ./sem.pod \
|| echo "Warning: pod2texi not found. Using old sem.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old sem.texi
pod2texi --output=./sql.texi ./sql \
|| echo "Warning: pod2texi not found. Using old sql.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old sql.texi
pod2texi --output=./niceload.texi ./niceload.pod \
|| echo "Warning: pod2texi not found. Using old niceload.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old niceload.texi
pod2texi --output=./parallel_tutorial.texi ./parallel_tutorial.pod \
|| echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel_tutorial.texi
pod2texi --output=./parallel_book.texi ./parallel_book.pod \
|| echo "Warning: pod2texi not found. Using old parallel_book.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel_book.texi
pod2texi --output=./parallel_design.texi ./parallel_design.pod \
|| echo "Warning: pod2texi not found. Using old parallel_design.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel_design.texi
pod2texi --output=./parallel_alternatives.texi ./parallel_alternatives.pod \
|| echo "Warning: pod2texi not found. Using old parallel_alternatives.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel_alternatives.texi
pod2texi --output=./parcat.texi ./parcat.pod \
|| echo "Warning: pod2texi not found. Using old parcat.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parcat.texi
pod2texi --output=./parset.texi ./parset.pod \
|| echo "Warning: pod2texi not found. Using old parset.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parset.texi
pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
|| echo "Warning: pod2pdf not found. Using old parallel.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel.pdf
pod2pdf --output-file ./env_parallel.pdf ./env_parallel.pod --title "GNU Parallel with environment" \
|| echo "Warning: pod2pdf not found. Using old env_parallel.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old env_parallel.pdf
pod2pdf --output-file ./sem.pdf ./sem.pod --title "GNU sem" \
|| echo "Warning: pod2pdf not found. Using old sem.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old sem.pdf
pod2pdf --output-file ./sql.pdf ./sql --title "GNU SQL" \
|| echo "Warning: pod2pdf not found. Using old sql.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old sql.pdf
pod2pdf --output-file ./niceload.pdf ./niceload.pod --title "GNU niceload" \
|| echo "Warning: pod2pdf not found. Using old niceload.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old niceload.pdf
pod2pdf --output-file ./parallel_tutorial.pdf ./parallel_tutorial.pod --title "GNU Parallel Tutorial" \
|| echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel_tutorial.pdf
pod2pdf --output-file ./parallel_book.pdf ./parallel_book.pod --title "GNU Parallel Book" \
|| echo "Warning: pod2pdf not found. Using old parallel_book.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel_book.pdf
pod2pdf --output-file ./parallel_design.pdf ./parallel_design.pod --title "GNU Parallel Design" \
|| echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel_design.pdf
pod2pdf --output-file ./parallel_alternatives.pdf ./parallel_alternatives.pod --title "GNU Parallel alternatives" \
|| echo "Warning: pod2pdf not found. Using old parallel_alternatives.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel_alternatives.pdf
pod2pdf --output-file ./parcat.pdf ./parcat.pod --title "GNU parcat" \
|| echo "Warning: pod2pdf not found. Using old parcat.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parcat.pdf
pod2pdf --output-file ./parset.pdf ./parset.pod --title "GNU parset" \
|| echo "Warning: pod2pdf not found. Using old parset.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parset.pdf
make[0]: Entering directory '/tmp/parallel-00000000/src'
/bin/mkdir -p '/usr/local/bin'
/usr/bin/install -c parallel sql niceload parcat parset env_parallel env_parallel.ash env_parallel.bash env_parallel.csh env_parallel.dash env_parallel.fish env_parallel.ksh env_parallel.pdksh env_parallel.sh env_parallel.tcsh env_parallel.zsh '/usr/local/bin'
make install-exec-hook
make[0]: Entering directory '/tmp/parallel-00000000/src'
rm /usr/local/bin/sem || true
ln -s parallel /usr/local/bin/sem
make[0]: Leaving directory '/tmp/parallel-00000000/src'
pod2html --title "GNU Parallel" ./parallel.pod > ./parallel.htmln \
&& mv ./parallel.htmln ./parallel.html \
|| echo "Warning: pod2html not found. Using old parallel.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel with environment" ./env_parallel.pod > ./env_parallel.htmln \
&& mv ./env_parallel.htmln ./env_parallel.html \
|| echo "Warning: pod2html not found. Using old env_parallel.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old env_parallel.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel tutorial" ./parallel_tutorial.pod > ./parallel_tutorial.htmln \
&& mv ./parallel_tutorial.htmln ./parallel_tutorial.html \
|| echo "Warning: pod2html not found. Using old parallel_tutorial.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel_tutorial.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel book" ./parallel_book.pod > ./parallel_book.htmln \
&& mv ./parallel_book.htmln ./parallel_book.html \
|| echo "Warning: pod2html not found. Using old parallel_book.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel_book.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel design" ./parallel_design.pod > ./parallel_design.htmln \
&& mv ./parallel_design.htmln ./parallel_design.html \
|| echo "Warning: pod2html not found. Using old parallel_design.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel_design.html
rm -f ./pod2htm*
pod2html --title "GNU Parallel alternatives" ./parallel_alternatives.pod > ./parallel_alternatives.htmln \
&& mv ./parallel_alternatives.htmln ./parallel_alternatives.html \
|| echo "Warning: pod2html not found. Using old parallel_alternatives.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parallel_alternatives.html
rm -f ./pod2htm*
pod2html --title "sem (GNU Parallel)" ./sem.pod > ./sem.htmln \
&& mv ./sem.htmln ./sem.html \
|| echo "Warning: pod2html not found. Using old sem.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old sem.html
rm -f ./pod2htm*
pod2html --title "GNU SQL" ./sql > ./sql.htmln \
&& mv ./sql.htmln ./sql.html \
|| echo "Warning: pod2html not found. Using old sql.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old sql.html
rm -f ./pod2htm*
pod2html --title "GNU niceload" ./niceload.pod > ./niceload.htmln \
&& mv ./niceload.htmln ./niceload.html \
|| echo "Warning: pod2html not found. Using old niceload.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old niceload.html
rm -f ./pod2htm*
pod2html --title "GNU parcat" ./parcat.pod > ./parcat.htmln \
&& mv ./parcat.htmln ./parcat.html \
|| echo "Warning: pod2html not found. Using old parcat.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parcat.html
rm -f ./pod2htm*
pod2html --title "GNU parset" ./parset.pod > ./parset.htmln \
&& mv ./parset.htmln ./parset.html \
|| echo "Warning: pod2html not found. Using old parset.html"
/bin/bash: pod2html: command not found
Warning: pod2html not found. Using old parset.html
rm -f ./pod2htm*
pod2texi --output=./parallel.texi ./parallel.pod \
|| echo "Warning: pod2texi not found. Using old parallel.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel.texi
pod2texi --output=./env_parallel.texi ./env_parallel.pod \
|| echo "Warning: pod2texi not found. Using old env_parallel.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old env_parallel.texi
pod2texi --output=./sem.texi ./sem.pod \
|| echo "Warning: pod2texi not found. Using old sem.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old sem.texi
pod2texi --output=./sql.texi ./sql \
|| echo "Warning: pod2texi not found. Using old sql.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old sql.texi
pod2texi --output=./niceload.texi ./niceload.pod \
|| echo "Warning: pod2texi not found. Using old niceload.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old niceload.texi
pod2texi --output=./parallel_tutorial.texi ./parallel_tutorial.pod \
|| echo "Warning: pod2texi not found. Using old parallel_tutorial.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel_tutorial.texi
pod2texi --output=./parallel_book.texi ./parallel_book.pod \
|| echo "Warning: pod2texi not found. Using old parallel_book.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel_book.texi
pod2texi --output=./parallel_design.texi ./parallel_design.pod \
|| echo "Warning: pod2texi not found. Using old parallel_design.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel_design.texi
pod2texi --output=./parallel_alternatives.texi ./parallel_alternatives.pod \
|| echo "Warning: pod2texi not found. Using old parallel_alternatives.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parallel_alternatives.texi
pod2texi --output=./parcat.texi ./parcat.pod \
|| echo "Warning: pod2texi not found. Using old parcat.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parcat.texi
pod2texi --output=./parset.texi ./parset.pod \
|| echo "Warning: pod2texi not found. Using old parset.texi"
/bin/bash: pod2texi: command not found
Warning: pod2texi not found. Using old parset.texi
pod2pdf --output-file ./parallel.pdf ./parallel.pod --title "GNU Parallel" \
|| echo "Warning: pod2pdf not found. Using old parallel.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel.pdf
pod2pdf --output-file ./env_parallel.pdf ./env_parallel.pod --title "GNU Parallel with environment" \
|| echo "Warning: pod2pdf not found. Using old env_parallel.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old env_parallel.pdf
pod2pdf --output-file ./sem.pdf ./sem.pod --title "GNU sem" \
|| echo "Warning: pod2pdf not found. Using old sem.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old sem.pdf
pod2pdf --output-file ./sql.pdf ./sql --title "GNU SQL" \
|| echo "Warning: pod2pdf not found. Using old sql.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old sql.pdf
pod2pdf --output-file ./niceload.pdf ./niceload.pod --title "GNU niceload" \
|| echo "Warning: pod2pdf not found. Using old niceload.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old niceload.pdf
pod2pdf --output-file ./parallel_tutorial.pdf ./parallel_tutorial.pod --title "GNU Parallel Tutorial" \
|| echo "Warning: pod2pdf not found. Using old parallel_tutorial.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel_tutorial.pdf
pod2pdf --output-file ./parallel_book.pdf ./parallel_book.pod --title "GNU Parallel Book" \
|| echo "Warning: pod2pdf not found. Using old parallel_book.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel_book.pdf
pod2pdf --output-file ./parallel_design.pdf ./parallel_design.pod --title "GNU Parallel Design" \
|| echo "Warning: pod2pdf not found. Using old parallel_design.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel_design.pdf
pod2pdf --output-file ./parallel_alternatives.pdf ./parallel_alternatives.pod --title "GNU Parallel alternatives" \
|| echo "Warning: pod2pdf not found. Using old parallel_alternatives.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parallel_alternatives.pdf
pod2pdf --output-file ./parcat.pdf ./parcat.pod --title "GNU parcat" \
|| echo "Warning: pod2pdf not found. Using old parcat.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parcat.pdf
pod2pdf --output-file ./parset.pdf ./parset.pod --title "GNU parset" \
|| echo "Warning: pod2pdf not found. Using old parset.pdf"
/bin/bash: pod2pdf: command not found
Warning: pod2pdf not found. Using old parset.pdf
/bin/mkdir -p '/usr/local/share/doc/parallel'
/usr/bin/install -c -m 644 parallel.html env_parallel.html sem.html sql.html niceload.html parallel_tutorial.html parallel_book.html parallel_design.html parallel_alternatives.html parcat.html parset.html parallel.texi env_parallel.texi sem.texi sql.texi niceload.texi parallel_tutorial.texi parallel_book.texi parallel_design.texi parallel_alternatives.texi parcat.texi parset.texi parallel.pdf env_parallel.pdf sem.pdf sql.pdf niceload.pdf parallel_tutorial.pdf parallel_book.pdf parallel_design.pdf parallel_alternatives.pdf parcat.pdf parset.pdf '/usr/local/share/doc/parallel'
pod2man --release='00000000' --center='parallel' \
--section=1 ./parallel.pod > ./parallel.1n \
&& mv ./parallel.1n ./parallel.1 \
|| echo "Warning: pod2man not found. Using old parallel.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./env_parallel.pod > ./env_parallel.1n \
&& mv ./env_parallel.1n ./env_parallel.1 \
|| echo "Warning: pod2man not found. Using old env_parallel.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old env_parallel.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./sem.pod > ./sem.1n \
&& mv ./sem.1n ./sem.1 \
|| echo "Warning: pod2man not found. Using old sem.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old sem.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./sql > ./sql.1n \
&& mv ./sql.1n ./sql.1 \
|| echo "Warning: pod2man not found. Using old sql.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old sql.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./niceload.pod > ./niceload.1n \
&& mv ./niceload.1n ./niceload.1 \
|| echo "Warning: pod2man not found. Using old niceload.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old niceload.1
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_tutorial.pod > ./parallel_tutorial.7n \
&& mv ./parallel_tutorial.7n ./parallel_tutorial.7 \
|| echo "Warning: pod2man not found. Using old parallel_tutorial.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_tutorial.7
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_book.pod > ./parallel_book.7n \
&& mv ./parallel_book.7n ./parallel_book.7 \
|| echo "Warning: pod2man not found. Using old parallel_book.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_book.7
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_design.pod > ./parallel_design.7n \
&& mv ./parallel_design.7n ./parallel_design.7 \
|| echo "Warning: pod2man not found. Using old parallel_design.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_design.7
pod2man --release='00000000' --center='parallel' \
--section=7 ./parallel_alternatives.pod > ./parallel_alternatives.7n \
&& mv ./parallel_alternatives.7n ./parallel_alternatives.7 \
|| echo "Warning: pod2man not found. Using old parallel_alternatives.7"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parallel_alternatives.7
pod2man --release='00000000' --center='parallel' \
--section=1 ./parcat.pod > ./parcat.1n \
&& mv ./parcat.1n ./parcat.1 \
|| echo "Warning: pod2man not found. Using old parcat.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parcat.1
pod2man --release='00000000' --center='parallel' \
--section=1 ./parset.pod > ./parset.1n \
&& mv ./parset.1n ./parset.1 \
|| echo "Warning: pod2man not found. Using old parset.1"
/bin/bash: pod2man: command not found
Warning: pod2man not found. Using old parset.1
/bin/mkdir -p '/usr/local/share/man/man1'
/usr/bin/install -c -m 644 parallel.1 env_parallel.1 sem.1 sql.1 niceload.1 parcat.1 parset.1 '/usr/local/share/man/man1'
/bin/mkdir -p '/usr/local/share/man/man7'
/usr/bin/install -c -m 644 parallel_tutorial.7 parallel_book.7 parallel_design.7 parallel_alternatives.7 '/usr/local/share/man/man7'
make[0]: Leaving directory '/tmp/parallel-00000000/src'
make[0]: Leaving directory '/tmp/parallel-00000000/src'
make[0]: Entering directory '/tmp/parallel-00000000'
make[0]: Entering directory '/tmp/parallel-00000000'
make[0]: Nothing to be done for 'install-exec-am'.
make[0]: Nothing to be done for 'install-data-am'.
make[0]: Leaving directory '/tmp/parallel-00000000'
make[0]: Leaving directory '/tmp/parallel-00000000'

View file

@ -46,12 +46,12 @@ par_exit_code dash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code fish /tmp/mysleep 100 137
par_exit_code fish parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code fish parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code fish parallel --halt-on-error now,done=1 true ::: 100 1
par_exit_code fish parallel --halt-on-error now,done=1 true ::: 100 0
par_exit_code fish parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code fish true;/tmp/mysleep 100 137
par_exit_code fish parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code fish parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code fish parallel --halt-on-error now,done=1 "true;true" ::: 100 1
par_exit_code fish parallel --halt-on-error now,done=1 "true;true" ::: 100 0
par_exit_code fish parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code mksh /tmp/mysleep 100 0
par_exit_code mksh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137

View file

@ -338,10 +338,10 @@ par_results_compress 0
par_results_compress 1
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,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --header : --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/tmpfile",
@ -366,10 +366,10 @@ par_results_csv --header : --tag ",
par_results_csv --header : --tag 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
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,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 2,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 3,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --header : --files --compress 1,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/tmpfile,
par_results_csv --header : --files 2,:,999.999,999.999,0,6,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
@ -394,15 +394,15 @@ par_results_csv --header : ",
par_results_csv --header : 4,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12
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,31,0,0,"echo H2 H1",H2,H1,"H2 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,"H2 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,"H2 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,"22 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,"22 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,"22 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,"23 H1 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,"23 11 /tmp/parallel-local-10s-tmpdir/tmpfile",
par_results_csv --tag --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,"23 12 /tmp/parallel-local-10s-tmpdir/tmpfile",
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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/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-tmpdir/tmpfile",
@ -452,15 +452,15 @@ par_results_csv --tag ",
par_results_csv --tag 9,:,999.999,999.999,0,6,0,0,"echo 23 12",23,12,"23 12 23 12
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,31,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 2,:,999.999,999.999,0,31,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 3,:,999.999,999.999,0,31,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 4,:,999.999,999.999,0,31,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 5,:,999.999,999.999,0,31,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 6,:,999.999,999.999,0,31,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 7,:,999.999,999.999,0,31,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 8,:,999.999,999.999,0,31,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 9,:,999.999,999.999,0,31,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 1,:,999.999,999.999,0,15,0,0,"echo H2 H1",H2,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 2,:,999.999,999.999,0,15,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 3,:,999.999,999.999,0,15,0,0,"echo H2 12",H2,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 4,:,999.999,999.999,0,15,0,0,"echo 22 H1",22,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 5,:,999.999,999.999,0,15,0,0,"echo 22 11",22,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 6,:,999.999,999.999,0,15,0,0,"echo 22 12",22,12,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 7,:,999.999,999.999,0,15,0,0,"echo 23 H1",23,H1,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 8,:,999.999,999.999,0,15,0,0,"echo 23 11",23,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
par_results_csv --files --compress 9,:,999.999,999.999,0,15,0,0,"echo 23 12",23,12,/tmp/parallel-local-10s-tmpdir/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-tmpdir/tmpfile,
par_results_csv --files 2,:,999.999,999.999,0,6,0,0,"echo H2 11",H2,11,/tmp/parallel-local-10s-tmpdir/tmpfile,
@ -528,9 +528,9 @@ par_slow_total_jobs 2
par_slow_total_jobs parallel: Warning: Reading X arguments took longer than XX seconds.
par_sockets_cores_threads ### Test --number-of-sockets/cores/threads
par_sockets_cores_threads 1
par_sockets_cores_threads 2
par_sockets_cores_threads 2
par_sockets_cores_threads 2
par_sockets_cores_threads 4
par_sockets_cores_threads 8
par_sockets_cores_threads 4
par_sockets_cores_threads ### Test --use-sockets-instead-of-threads
par_sockets_cores_threads threads done
par_sockets_cores_threads sockets done

File diff suppressed because it is too large Load diff

View file

@ -90,14 +90,14 @@ par_tee_ssh 2
par_tee_ssh 3
par_tee_ssh 3
par_wd_no_such_dir ### --wd no-such-dir - csh
par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied
par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
par_wd_no_such_dir Exit code 1
par_wd_no_such_dir ### --wd no-such-dir - tcsh
par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied
par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
par_wd_no_such_dir Exit code 1
par_wd_no_such_dir ### --wd no-such-dir - bash
par_wd_no_such_dir mkdir: cannot create directory /no-such-dir: Permission denied
par_wd_no_such_dir mkdir: cannot create directory '/no-such-dir': Permission denied
par_wd_no_such_dir parallel: Cannot chdir to /no-such-dir
par_wd_no_such_dir Exit code 1

View file

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

View file

@ -66,6 +66,8 @@ par_zsh_parset 2
par_zsh_parset 3
par_zsh_parset myecho myvar myarr 0 myfun foo myecho myvar myarr 0 myfun bar myecho myvar myarr 0 myfun baz
par_zsh_parset myecho myvar myarr 0 myfun foo myecho myvar myarr 0 myfun bar myecho myvar myarr 0 myfun baz
par_zsh_parset Exit value 2 = 2
par_zsh_parset Exit value 2 = 2
par_zsh_man ### zsh
par_zsh_man ### From man env_parallel
par_zsh_man aliases with = & " ! ' work
@ -368,7 +370,7 @@ par_tcsh_funky
par_tcsh_funky 3 arg alias_works
par_tcsh_funky 3 arg alias_works_over_ssh
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<7F>ƒ„…†‡ˆ‰ŠŒ<E280B9>Ž<EFBFBD><C5BD>“”•˜™šœ<E280BA>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works_over_ssh
par_tcsh_funky Funky-  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~<EFBFBD>ƒ„…†‡ˆ‰ŠŒ<EFBFBD>Ž<EFBFBD><EFBFBD>“”•˜™šœ<EFBFBD>žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ-funky alias_var_works_over_ssh
par_tcsh_funky \\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\ \!\"\#\$%\&\'\(\)\*+,-./0123456789:\;\<\=\>\?@ABCDEFGHIJKLMNOPQRSTUVWXYZ\[\\\]\^_\`abcdefghijklmnopqrstuvwxyz\{\|\}\~<7F>\\ƒ\„\…\†\‡\ˆ\‰\Š\\Œ\<5C>\Ž\<5C>\<5C>\\\“\”\•\\—\˜\™\š\\œ\<5C>\ž\Ÿ\ \¡\¢\£\¤\¥\¦\§\¨\©\ª\«\¬\­\®\¯\°\±\²\³\´\µ\¶\·\¸\¹\º\»\¼\½\¾\¿\À\Á\Â\Ã\Ä\Å\Æ\Ç\È\É\Ê\Ë\Ì\Í\Î\Ï\Ð\Ñ\Ò\Ó\Ô\Õ\Ö\×\Ø\Ù\Ú\Û\Ü\Ý\Þ\ß\à\á\â\ã\ä\å\æ\ç\è\é\ê\ë\ì\í\î\ï\ð\ñ\ò\ó\ô\õ\ö\÷\ø\ù\ú\û\ü\ý\þ\ÿ
par_tcsh_funky func_echo: Command not found.
par_tcsh_funky func_echo: Command not found.
@ -438,6 +440,8 @@ par_sh_parset newline2
par_sh_parset 1
par_sh_parset 2
par_sh_parset 3
par_sh_parset Exit value 2 = 2
par_sh_parset Exit value 2 = 2
par_sh_man ### sh
par_sh_man ### From man env_parallel
par_sh_man aliases with = & " ! ' work
@ -608,6 +612,8 @@ par_mksh_parset 2
par_mksh_parset 3
par_mksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_mksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_mksh_parset Exit value 2 = 2
par_mksh_parset Exit value 2 = 2
par_mksh_man ### mksh
par_mksh_man ### From man env_parallel
par_mksh_man aliases with = & " ! ' work
@ -889,6 +895,8 @@ par_ksh_parset 2
par_ksh_parset 3
par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_ksh_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_ksh_parset Exit value 2 = 2
par_ksh_parset Exit value 2 = 2
par_ksh_man ### ksh
par_ksh_man ### From man env_parallel
par_ksh_man aliases with = & " ! ' work
@ -957,9 +965,9 @@ par_ksh_man work,
par_ksh_man too
par_ksh_man This may never work
par_ksh_man https://unix.stackexchange.com/questions/457031/extract-full-function-definitions
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `{' unmatched
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `(' unexpected
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `(' unexpected
par_ksh_man /usr/bin/ksh: line 21: syntax error at line XXX: `(' unexpected
par_ksh_man exit value 2 should be 2
par_ksh_man Unknown option: no-such-option
par_ksh_man exit value 255 should be 255
@ -1130,15 +1138,15 @@ par_fish_underscore aliases and arrays in functions work
par_fish_underscore aliases functions work
par_fish_underscore aliases functions work
par_fish_underscore ^
par_fish_underscore in function “myfunc”
par_fish_underscore in function 'myfunc'
par_fish_underscore called on standard input
par_fish_underscore with parameter list “work”
par_fish_underscore with parameter list 'work'
par_fish_underscore
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myecho
par_fish_underscore ^
par_fish_underscore in function “myfunc”
par_fish_underscore in function 'myfunc'
par_fish_underscore called on standard input
par_fish_underscore with parameter list “work”
par_fish_underscore with parameter list 'work'
par_fish_underscore
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myecho
par_fish_underscore ^
@ -1277,6 +1285,8 @@ par_dash_parset newline2
par_dash_parset 1
par_dash_parset 2
par_dash_parset 3
par_dash_parset Exit value 2 = 2
par_dash_parset Exit value 2 = 2
par_dash_man ### dash
par_dash_man ### From man env_parallel
par_dash_man aliases with = & " ! ' work
@ -1553,6 +1563,8 @@ par_bash_parset 2
par_bash_parset 3
par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_bash_parset myecho myvar myarr 1 myfun foo myecho myvar myarr 1 myfun bar myecho myvar myarr 1 myfun baz
par_bash_parset Exit value 2 = 2
par_bash_parset Exit value 2 = 2
par_bash_man ### bash
par_bash_man ### From man env_parallel
par_bash_man aliases with = & " ! ' work
@ -1630,10 +1642,12 @@ par_bash_man exit value 2 should be 2
par_bash_man Unknown option: no-such-option
par_bash_man exit value 255 should be 255
par_bash_funky
par_bash_funky
par_bash_funky
par_bash_funky 
par_bash_funky 
par_bash_funky -funkymultiline
par_bash_funky -funkymultiline
par_bash_funky
par_bash_funky
par_bash_funky space 6
par_bash_funky space 6
par_bash_funky ' '
@ -1651,6 +1665,8 @@ par_bash_funky function_works
par_bash_funky function_works_over_ssh
par_bash_funky myvar works
par_bash_funky myvar works
par_bash_funky -funkymultiline
par_bash_funky -funkymultiline
par_bash_environment_too_big bug #50815: env_parallel should warn if the environment is too big
par_bash_environment_too_big OK_bigvar
par_bash_environment_too_big OK_bigvar_remote
@ -1819,6 +1835,8 @@ par_ash_parset newline2
par_ash_parset 1
par_ash_parset 2
par_ash_parset 3
par_ash_parset Exit value 2 = 2
par_ash_parset Exit value 2 = 2
par_ash_man ### ash
par_ash_man ### From man env_parallel
par_ash_man aliases with = & " ! ' work

View file

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

View file

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

File diff suppressed because it is too large Load diff

View file

@ -208,7 +208,7 @@ Job 3 of 5
Job 4 of 5
Job 5 of 5
parallel echo {} shell quoted is {= '$_=Q($_)' =} ::: '*/!#$'
*/!#$ shell quoted is \*/\!\#\$
*/!#$ shell quoted is '*/!#$'
parallel echo {= 'if($_==3) { skip() }' =} ::: {1..5}
9
parallel echo {= 'if($arg[1]==$arg[2]) { skip() }' =} \
@ -783,6 +783,10 @@ ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh`
E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc
Supports: aliases, functions, variables, arrays
mksh: Put this in $HOME/.mkshrc: source `which env_parallel.mksh`
E.g. by doing: echo 'source `which env_parallel.mksh`' >> $HOME/.mkshrc
Supports: aliases, functions, variables, arrays
pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh`
E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile
Supports: aliases, functions, variables, arrays
@ -952,6 +956,10 @@ ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh`
E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc
Supports: aliases, functions, variables, arrays
mksh: Put this in $HOME/.mkshrc: source `which env_parallel.mksh`
E.g. by doing: echo 'source `which env_parallel.mksh`' >> $HOME/.mkshrc
Supports: aliases, functions, variables, arrays
pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh`
E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile
Supports: aliases, functions, variables, arrays
@ -987,7 +995,7 @@ For details: see man env_parallel
export -f my_func3
parallel -vv --workdir ... --nice 17 --env _ --trc {}.out \
-S $SERVER1 my_func3 {} ::: abc-file
ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -essh\ -l\ parallel ./abc-file lo:./.TMPWORKDIR;ssh -l parallel lo -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; BASE64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path=cd\ ./.TMPWORKDIR/./.\;\ rsync -rlDzR -essh\ -l\ parallel lo:./abc-file.out ./.;ssh -l parallel lo -- rm\ -f\ ./.TMPWORKDIR/abc-file\;\ sh\ -c\ rmdir\\\ ./.TMPWORKDIR/\\\ ./.parallel/tmp/\\\ ./.parallel/\\\ 2\\\>/dev/null\\\;rm\\\ -rf\\\ ./.TMPWORKDIR\\\;;ssh -l parallel lo -- rm\ -f\ ./.TMPWORKDIR/abc-file.out\;\ sh\ -c\ rmdir\\\ ./.TMPWORKDIR/\\\ ./.parallel/tmp/\\\ ./.parallel/\\\ 2\\\>/dev/null\\\;rm\\\ -rf\\\ ./.TMPWORKDIR\\\;;ssh -l parallel lo -- rm -rf .TMPWORKDIR; exit $_EXIT_status;
ssh -l parallel lo -- mkdir -p ./.TMPWORKDIR && rsync --protocol 30 -rlDzR -e'ssh -l parallel' ./abc-file lo:./.TMPWORKDIR;ssh -l parallel lo -- exec perl -e "'"'@GNU_Parallel=split/_/,"use_IPC::Open3;_use_MIME::Base64";eval"@GNU_Parallel";$chld=$SIG{CHLD};$SIG{CHLD}="IGNORE";my$zip=(grep{-x$_}"/usr/local/bin/bzip2")[0]||"bzip2";open3($in,$out,">&STDERR",$zip,"-dc");if(my$perlpid=fork){close$in;$eval=join"",<$out>;close$out;}else{close$out;print$in(decode_base64(join"",@ARGV));close$in;exit;}wait;$SIG{CHLD}=$chld;eval$eval;'"'" "'"'BASE64'"'";_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path='cd ./.TMPWORKDIR/./.; rsync' -rlDzR -e'ssh -l parallel' lo:./abc-file.out ./.;ssh -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -l parallel lo -- 'rm -f ./.TMPWORKDIR/abc-file.out; sh -c '"'"'rmdir ./.TMPWORKDIR/ ./.parallel/tmp/ ./.parallel/ 2>/dev/null;'"'"''"'"'rm -rf ./.TMPWORKDIR;'"'";ssh -l parallel lo -- rm -rf .TMPWORKDIR; exit $_EXIT_status;
parset myvar1,myvar2 echo ::: a b
echo $myvar1
echo $myvar2
@ -1015,6 +1023,10 @@ ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh`
E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc
Supports: aliases, functions, variables, arrays
mksh: Put this in $HOME/.mkshrc: source `which env_parallel.mksh`
E.g. by doing: echo 'source `which env_parallel.mksh`' >> $HOME/.mkshrc
Supports: aliases, functions, variables, arrays
pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh`
E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile
Supports: aliases, functions, variables, arrays
@ -1066,6 +1078,10 @@ ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh`
E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc
Supports: aliases, functions, variables, arrays
mksh: Put this in $HOME/.mkshrc: source `which env_parallel.mksh`
E.g. by doing: echo 'source `which env_parallel.mksh`' >> $HOME/.mkshrc
Supports: aliases, functions, variables, arrays
pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh`
E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile
Supports: aliases, functions, variables, arrays
@ -1115,6 +1131,10 @@ ksh: Put this in $HOME/.kshrc: source `which env_parallel.ksh`
E.g. by doing: echo 'source `which env_parallel.ksh`' >> $HOME/.kshrc
Supports: aliases, functions, variables, arrays
mksh: Put this in $HOME/.mkshrc: source `which env_parallel.mksh`
E.g. by doing: echo 'source `which env_parallel.mksh`' >> $HOME/.mkshrc
Supports: aliases, functions, variables, arrays
pdksh: Put this in $HOME/.profile: source `which env_parallel.pdksh`
E.g. by doing: echo '. `which env_parallel.pdksh`' >> $HOME/.profile
Supports: aliases, functions, variables, arrays

View file

@ -115,10 +115,10 @@ OK
ls: /tmp/parallel.file*: No such file or directory
OK
### --transfer --cleanup - multiple argument files
cat /tmp/parallel.file\>fire.file tmp/parallel.file\>fire.file
cat '/tmp/parallel.file>fire.file' 'tmp/parallel.file>fire.file'
file>fire
file>fire
cat /tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file tmp/parallel.file\ :\ \&\ \)\ \\n\*.jpg.file
cat '/tmp/parallel.file : & ) \n*.jpg.file' 'tmp/parallel.file : & ) \n*.jpg.file'
file : & ) \n*.jpg
file : & ) \n*.jpg
ls: /tmp/parallel.file*: No such file or directory

View file

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

View file

@ -1,5 +1,5 @@
### Test $PARALLEL - single line
1
4
1
1
centos3.tange.dk

View file

@ -1,11 +1,11 @@
### Test --wd newtempdir/newdir/tmp/ with space dirs
echo >./\ ab/c\"d/ef\ g.6
echo >\ ab/c\"d/efg.6
echo >'./ ab/c"d/ef g'.6
echo >' ab/c"d/efg'.6
echo >./b/bar.6
echo >./b/foo.6
echo >./\ ab\ /c\'\ d/\ ef\"g.6
echo >'./ ab /c'"'"' d/ ef"g'.6
echo >./2-col.txt.6
echo >./a\ b/cd\ /\ ef/efg.6
echo >'./a b/cd / ef/efg'.6
./ ab /c' d/ ef"g.6
./ ab/c"d/ef g.6
./ ab/c"d/efg.6
@ -14,13 +14,13 @@ echo >./a\ b/cd\ /\ ef/efg.6
./b/bar.6
./b/foo.6
### Test --wd /tmp/newtempdir/newdir/tmp/ with space dirs
echo >./\ ab/c\"d/ef\ g.7
echo >\ ab/c\"d/efg.7
echo >'./ ab/c"d/ef g'.7
echo >' ab/c"d/efg'.7
echo >./b/bar.7
echo >./b/foo.7
echo >./\ ab\ /c\'\ d/\ ef\"g.7
echo >'./ ab /c'"'"' d/ ef"g'.7
echo >./2-col.txt.7
echo >./a\ b/cd\ /\ ef/efg.7
echo >'./a b/cd / ef/efg'.7
./ ab /c' d/ ef"g.7
./ ab/c"d/ef g.7
./ ab/c"d/efg.7
@ -34,13 +34,13 @@ echo >./a\ b/cd\ /\ ef/efg.7
echo >2-col.txt.2
./2-col.txt.2
### Test --wd ... with space dirs
echo >./\ ab/c\"d/ef\ g.3
echo >\ ab/c\"d/efg.3
echo >'./ ab/c"d/ef g'.3
echo >' ab/c"d/efg'.3
echo >./b/bar.3
echo >./b/foo.3
echo >./\ ab\ /c\'\ d/\ ef\"g.3
echo >'./ ab /c'"'"' d/ ef"g'.3
echo >./2-col.txt.3
echo >./a\ b/cd\ /\ ef/efg.3
echo >'./a b/cd / ef/efg'.3
./ ab /c' d/ ef"g.3
./ ab/c"d/ef g.3
./ ab/c"d/efg.3
@ -52,13 +52,13 @@ echo >./a\ b/cd\ /\ ef/efg.3
echo >2-col.txt.4
./2-col.txt.4
### Test --wd /tmp/ with space dirs
echo >./\ ab/c\"d/ef\ g.5
echo >\ ab/c\"d/efg.5
echo >'./ ab/c"d/ef g'.5
echo >' ab/c"d/efg'.5
echo >./b/bar.5
echo >./b/foo.5
echo >./\ ab\ /c\'\ d/\ ef\"g.5
echo >'./ ab /c'"'"' d/ ef"g'.5
echo >./2-col.txt.5
echo >./a\ b/cd\ /\ ef/efg.5
echo >'./a b/cd / ef/efg'.5
./ ab /c' d/ ef"g.5
./ ab/c"d/ef g.5
./ ab/c"d/efg.5

View file

@ -1,13 +1,13 @@
echo '### Test --return of weirdly named file'
### Test --return of weirdly named file
stdout parallel --return {} -vv -S parallel\@parallel-server1 echo '>'{} ::: 'aa<${#}" b' | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'; rm 'aa<${#}" b'
ssh -l parallel one-server -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path=cd\ ././.\;\ rsync -rlDzR -essh\ -l\ parallel parallel-server1:./aa\\\<\\\$\\\{\\\#\\\}\\\"\\\ b ./.; exit $_EXIT_status;
ssh -l parallel one-server -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="1";$bashfunc = "";@ARGV="echo >'"'"'"'"'"'"'"'"'aa<\${#}\" b'"'"'"'"'"'"'"'"'";$shell="$ENV{SHELL}";$tmpdir="/tmp/test61-tmpdir";$nice=0;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";_EXIT_status=$?; mkdir -p ./. && rsync --protocol 30 --rsync-path='cd ././.; rsync' -rlDzR -e'ssh -l parallel' parallel-server1:"'"'./aa<${#}" b'"'" ./.; exit $_EXIT_status;
echo '### Test if remote login shell is csh'
### Test if remote login shell is csh
stdout parallel -k -vv -S csh@localhost 'echo $PARALLEL_PID $PARALLEL_SEQ {}| wc -w' ::: a b c | perl -pe 's/\S*parallel-server\S*/one-server/;s:[a-z+=/\\0-9]{500,}:base64:i;'
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;
ssh -l csh localhost -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="1";$bashfunc = "";@ARGV="echo \$PARALLEL_PID \$PARALLEL_SEQ a| wc -w";$shell="$ENV{SHELL}";$tmpdir="/tmp/test61-tmpdir";$nice=0;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";
3
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;
ssh -l csh localhost -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="2";$bashfunc = "";@ARGV="echo \$PARALLEL_PID \$PARALLEL_SEQ b| wc -w";$shell="$ENV{SHELL}";$tmpdir="/tmp/test61-tmpdir";$nice=0;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";
3
ssh -l csh localhost -- exec perl -e @GNU_Parallel\\\=split/_/,\\\"use_IPC::Open3\\\;_use_MIME::Base64\\\"\\\;eval\\\"@GNU_Parallel\\\"\\\;\\\$chld\\\=\\\$SIG\\\{CHLD\\\}\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\"IGNORE\\\"\\\;my\\\$zip\\\=\\\(grep\\\{-x\\\$_\\\}\\\"/usr/local/bin/bzip2\\\"\\\)\\\[0\\\]\\\|\\\|\\\"bzip2\\\"\\\;open3\\\(\\\$in,\\\$out,\\\"\\\>\\\&STDERR\\\",\\\$zip,\\\"-dc\\\"\\\)\\\;if\\\(my\\\$perlpid\\\=fork\\\)\\\{close\\\$in\\\;\\\$eval\\\=join\\\"\\\",\\\<\\\$out\\\>\\\;close\\\$out\\\;\\\}else\\\{close\\\$out\\\;print\\\$in\\\(decode_base64\\\(join\\\"\\\",@ARGV\\\)\\\)\\\;close\\\$in\\\;exit\\\;\\\}wait\\\;\\\$SIG\\\{CHLD\\\}\\\=\\\$chld\\\;eval\\\$eval\\\; base64;
ssh -l csh localhost -- exec 'perl -e '"'"'$ENV{"PARALLEL_PID"}="XXXXX";$ENV{"PARALLEL_SEQ"}="3";$bashfunc = "";@ARGV="echo \$PARALLEL_PID \$PARALLEL_SEQ c| wc -w";$shell="$ENV{SHELL}";$tmpdir="/tmp/test61-tmpdir";$nice=0;do{$ENV{PARALLEL_TMP}=$tmpdir."/par".join"",map{(0..9,"a".."z","A".."Z")[rand(62)]}(1..5);}while(-e$ENV{PARALLEL_TMP});$SIG{CHLD}=sub{$done=1;};$pid=fork;unless($pid){eval{setpgrp};eval{setpriority(0,0,$nice)};exec$shell,"-c",($bashfunc."@ARGV");die"exec:$!\n";}do{$s=$s<1?0.001+$s*1.03:$s;select(undef,undef,undef,$s);}until($done||getppid==1);kill(SIGHUP,-${pid})unless$done;wait;exit($?&127?128+($?&127):1+$?>>8)'"'";
3