parallel: Avoid warning in MySQL, fish and perl.

This commit is contained in:
Ole Tange 2020-06-25 13:07:02 +02:00
parent 62ff9a8722
commit 28620b2c49
20 changed files with 458 additions and 297 deletions

View file

@ -24,6 +24,8 @@ https://zenodo.org/deposit/new
(*) Software
(Reserve DOI)
GNU Parallel 20200622 ('Floyd')
Ole Tange
https://orcid.org/0000-0002-6345-1437
Description
GNU Parallel is a general parallelizer to run multiple serial command line programs in parallel without changing them.
@ -63,7 +65,6 @@ make alphaupload
export YYYYMMDD=`yyyymmdd`
export YYYYMMDD=${YYYYMMDD:0:6}22
YYYYMMDD=`yyyymmdd`
export YYYYMMDD
cd ~/privat/parallel/packager/obs

View file

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

View file

@ -2157,7 +2157,7 @@ sub check_invalid_option_combinations() {
sub init_globals() {
# Defaults:
$Global::version = 20200622;
$Global::version = 20200623;
$Global::progname = 'parallel';
$::name = "GNU Parallel";
$Global::infinity = 2**31;
@ -4860,6 +4860,9 @@ sub wait_and_exit($) {
if($Global::unkilled_sqlworker) {
waitpid($Global::unkilled_sqlworker,0);
}
# Avoid: Warning: unable to close filehandle properly: No space
# left on device during global destruction.
$SIG{__WARN__} = sub {};
exit($error);
}
@ -8590,12 +8593,13 @@ sub total_failed($) {
unlink;
rmdir;
}
if($bash=~s/h//) {
if($bash=~s/(\d+)h/$1/) {
exit $bash;
}
exit $csh;
}).
"' ".'"$?h" "$status" ';
# `echo \$?h` is needed to make fish not complain
"' ".'"`echo \\\\\\\\\$?h`" "$status" ';
}
return $script
}
@ -12615,7 +12619,7 @@ sub create_table($) {
my %vartype = (
"Oracle" => { "BIGINT" => "NUMBER(19,0)",
"TEXT" => "CLOB", },
"mysql" => { "TEXT" => "LONGTEXT", },
"mysql" => { "TEXT" => "BLOB", },
"CSV" => { "BIGINT" => "INT",
"FLOAT" => "REAL", },
);

View file

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

View file

@ -8,7 +8,7 @@ install_packages() {
# The testsuite depends on this:
test_pkgs="imagemagick expect autossh sshpass jq libpod-simple-perl pod2pdf gawk"
test_pkgs="$test_pkgs lua5.3 clisp php-cli nodejs mono-csharp-shell libevent-dev"
test_pkgs="$test_pkgs tcl libtext-csv-perl"
test_pkgs="$test_pkgs tcl libtext-csv-perl xterm libc6-i386 libcrypt1:i386"
# DEBIAN package
packaging_pkgs="dpkg-dev build-essential debhelper osc cvs automake-1.15 python3-m2crypto"
@ -24,18 +24,23 @@ install_packages() {
shell_pkgs="ash dash fdclone fish fizsh ksh ksh93 mksh posh rc rush sash tcsh yash zsh"
# Databases
database_pkgs="postgresql mysql-server sqlite"
sudo dpkg --add-architecture i386
if $INSTALL $test_pkgs $packaging_pkgs $shebang_pkgs $sql_pkgs $compression_pkgs $shell_pkgs $database_pkgs; then
# OK
true
else
echo Packages missing
exit 1
return 1
fi
sudo apt update &
}
setup_databases() {
# DATABASES
echo '# Create PostgreSQL'
# Drop database and user if needed
sudo su - postgres -c 'dropdb '`whoami`
sudo su - postgres -c 'dropuser '`whoami`
sudo su - postgres -c 'createdb '`whoami`
sudo su - postgres -c 'createuser '`whoami`
sudo su - postgres -c "sql pg:/// \"ALTER USER \\\"`whoami`\\\" WITH PASSWORD '`whoami`';\""
@ -43,7 +48,11 @@ setup_databases() {
mysqlrootpass=${mysqlrootpass:-b+Ydjq4ejT4E}
echo '# Create MySQL'
sudo su - mysql mysqladmin create `whoami`
sudo su mysql mysqladmin create `whoami`
# Default Debian way of getting "root" access
sudo mysql --defaults-file=/etc/mysql/debian.cnf mysql <<< "ALTER USER 'root'@'localhost' IDENTIFIED BY '$mysqlrootpass';"
# Drop database and user if needed
sudo sql mysql://root:"$mysqlrootpass"@/mysql "DROP DATABASE `whoami`;DROP USER '`whoami`'@'localhost';"
sudo sql mysql://root:"$mysqlrootpass"@/mysql "CREATE DATABASE `whoami`;CREATE USER '`whoami`'@'localhost' IDENTIFIED BY '`whoami`'; GRANT ALL ON `whoami`.* TO '`whoami`'@'localhost';"
}
@ -222,6 +231,28 @@ tmux_versions() {
)
}
bash_versions() {
echo You may have to kill conftest
(cd /tmp
git clone https://git.savannah.gnu.org/git/bash.git
make_one() {
rsync -a --delete bash/ $1/
cd $1
git reset --hard
git checkout $1
LDFLAGS=-static ./configure &&
make -j2 &&
sudo cp bash /usr/local/bin/$1
}
export -f make_one
echo '# Building bash'
(cd bash; git tag | grep -v -- '-.*-') |
stdout parallel --lb --tag '/usr/local/bin/{} --version || make_one {}'
(cd bash; git tag | grep -v -- '-.*-') |
parallel -k -v --tag '/usr/local/bin/{} --version'
)
}
misc() {
parallel --record-env
@ -239,5 +270,6 @@ run() {
lsh_setup &&
add_freebsd &&
tmux_versions &&
bash_versions &&
misc
}

View file

@ -113,6 +113,20 @@ par_timeout() {
perl -ne '10 < $_ and $_ < 100 and print "OK\n"'
}
par_bug57364() {
echo '### bug #57364: Race condition creating len cache file.'
j=32
set -e
for i in $(seq 1 50); do
# Clear cache (simple 'rm -rf' causes race condition)
mv "${HOME}/.parallel/tmp" "${HOME}/.parallel/tmp-$$" &&
rm -rf "${HOME}/.parallel/tmp-$$"
# Try to launch multiple parallel simultaneously.
seq $j |
xargs -P $j -n 1 parallel true $i :::
done 2>&1
}
#par_crashing() {
# echo '### bug #56322: sem crashed when running with input from seq'
# echo "### This should not fail"

View file

@ -4,6 +4,77 @@
# Each should be taking 10-30s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_bin() {
echo '### Test --bin'
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
echo '### Test --bin with expression that gives 1..n'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
echo '### Test --bin with expression that gives 0..n-1'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
# Fails - blocks!
# paste <(seq 10000000) <(seq 10000000 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
}
par_nice() {
echo 'Check that --nice works'
# parallel-20160422 OK
check_for_2_bzip2s() {
perl -e '
for(1..5) {
# Try 5 times if the machine is slow starting bzip2
sleep(1);
@out = qx{ps -eo "%c %n" | grep 18 | grep bzip2};
if($#out == 1) {
# Should find 2 lines
print @out;
exit 0;
}
}
print "failed\n@out";
'
}
# wait for load < 8
parallel --load 8 echo ::: load_10
parallel -j0 --timeout 10 --nice 18 bzip2 '<' ::: /dev/zero /dev/zero &
pid=$!
check_for_2_bzip2s
parallel --retries 10 '! kill -TERM' ::: $pid 2>/dev/null
}
par_test_diff_roundrobin_k() {
echo '### test there is difference on -k'
. $(which env_parallel.bash)
mytest() {
K=$1
doit() {
# Sleep random time ever 1k line
# to mix up which process gets the next block
perl -ne '$t++ % 1000 or select(undef, undef, undef, rand()/10);print' |
md5sum
}
export -f doit
seq 1000000 |
parallel --block 65K --pipe $K --roundrobin doit |
sort
}
export -f mytest
parset a,b,c mytest ::: -k -k ''
# a == b and a != c or error
if [ "$a" == "$b" ]; then
if [ "$a" != "$c" ]; then
echo OK
else
echo error a c
fi
else
echo error a b
fi
}
par_colsep() {
echo '### Test of --colsep'
echo 'a%c%b' | parallel --colsep % echo {1} {3} {2}
@ -509,7 +580,8 @@ par_tmp_full() {
par_jobs_file() {
echo '### Test of -j filename - non-existent file'
stdout parallel -j no_such_file echo ::: 1
stdout parallel -j no_such_file echo ::: 1 |
perl -ne '/Tange, O.|Zenodo./ or print'
echo '### Test of -j filename'
echo 3 >/tmp/jobs_to_run1

View file

@ -10,13 +10,15 @@ par_exit_code() {
# Runs command in given shell via Perl's open3
shell="$1"
prg="$2"
perl -MIPC::Open3 -e 'open3($a,$b,$c,"'$shell'","-c",'"$prg"'); wait; print $?>>8,"\n"'
perl -MIPC::Open3 -e 'open3($a,$b,$c,"'$shell'","-c","'"$prg"'"); wait; print $?>>8,"\n"'
}
export -f in_shell_run_command
runit() {
OK="ash bash csh dash fish mksh posh rc sash sh static-sh tcsh"
BAD="fdsh fizsh ksh ksh93 yash zsh"
# These give the same exit code prepended with 'true;' or not
OK="ash csh dash fish fizsh ksh2020 posh rc sash sh tcsh"
# These do not give the same exit code prepended with 'true;' or not
BAD="bash fdsh ksh93 mksh static-sh yash zsh"
s=100
rm -f /tmp/mysleep
cp /bin/sleep /tmp/mysleep
@ -24,18 +26,18 @@ par_exit_code() {
echo '# Ideally the command should return the same'
echo '# with or without parallel'
echo '# but fish 2.4.0 returns 1 while X.X.X returns 0'
parallel -kj500% --argsep ,, --tag in_shell_run_command {1} '{=2 $_=Q($_) =}' \
parallel -kj500% --argsep ,, --tag in_shell_run_command {1} {2} \
,, $OK $BAD ,, \
'/tmp/mysleep '$s \
'parallel --halt-on-error now,fail=1 /tmp/mysleep ::: '$s \
'parallel --halt-on-error now,done=1 /tmp/mysleep ::: '$s \
'parallel --halt-on-error now,done=1 /bin/true ::: '$s \
'parallel --halt-on-error now,done=1 exit ::: '$s \
'true;/tmp/mysleep '$s \
'parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: '$s \
'parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: '$s \
'parallel --halt-on-error now,done=1 "true;/bin/true" ::: '$s \
'parallel --halt-on-error now,done=1 "true;exit" ::: '$s
"/tmp/mysleep "$s \
"parallel --halt-on-error now,fail=1 /tmp/mysleep ::: "$s \
"parallel --halt-on-error now,done=1 /tmp/mysleep ::: "$s \
"parallel --halt-on-error now,done=1 /bin/true ::: "$s \
"parallel --halt-on-error now,done=1 exit ::: "$s \
"true;/tmp/mysleep "$s \
"parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: "$s \
"parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: "$s \
"parallel --halt-on-error now,done=1 'true;/bin/true' ::: "$s \
"parallel --halt-on-error now,done=1 'true;exit' ::: "$s
}
export -f runit
@ -185,20 +187,6 @@ par_groupby_pipepart() {
::: '3 $_%=2' 3 c1 'c1 $_%=2' 's/^(\d+[\t ,]+){2}(\d+).*/$2/'
}
par_bug57364() {
echo '### bug #57364: Race condition creating len cache file.'
j=32
set -e
for i in $(seq 1 50); do
# Clear cache (simple 'rm -rf' causes race condition)
mv "${HOME}/.parallel/tmp" "${HOME}/.parallel/tmp-$$" &&
rm -rf "${HOME}/.parallel/tmp-$$"
# Try to launch multiple parallel simultaneously.
seq $j |
xargs -P $j -n 1 parallel true $i :::
done 2>&1
}
par_sighup() {
echo '### Test SIGHUP'
parallel -k -j5 sleep 15';' echo ::: {1..99} >/tmp/parallel$$ 2>&1 &

View file

@ -4,21 +4,6 @@
# Each should be taking 3-10s and be possible to run in parallel
# I.e.: No race conditions, no logins
par_bin() {
echo '### Test --bin'
seq 10 | parallel --pipe --bin 1 -j4 wc | sort
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin 2 -j4 wc | sort
echo '### Test --bin with expression that gives 1..n'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_=$_%2+1' -j4 wc | sort
echo '### Test --bin with expression that gives 0..n-1'
paste <(seq 10) <(seq 10 -1 1) |
parallel --pipe --colsep '\t' --bin '2 $_%=2' -j4 wc | sort
# Fails - blocks!
# paste <(seq 10000000) <(seq 10000000 -1 1) | parallel --pipe --colsep '\t' --bin 2 wc
}
par_tee_with_premature_close() {
echo '--tee --pipe should send all data to all commands'
echo 'even if a command closes stdin before reading everything'
@ -26,6 +11,7 @@ par_tee_with_premature_close() {
correct="$(seq 1000000 | parallel -k --tee --pipe ::: wc head tail 'sleep 1')"
echo "$correct"
echo 'tee without --output-error=warn-nopipe support'
mkdir -p tmp
cat > tmp/tee <<-EOF
#!/usr/bin/perl
@ -360,62 +346,6 @@ par_do_not_export_PARALLEL_ENV() {
env_parallel doit ::: 1
}
par_nice() {
echo 'Check that --nice works'
# parallel-20160422 OK
check_for_2_bzip2s() {
perl -e '
for(1..5) {
# Try 5 times if the machine is slow starting bzip2
sleep(1);
@out = qx{ps -eo "%c %n" | grep 18 | grep bzip2};
if($#out == 1) {
# Should find 2 lines
print @out;
exit 0;
}
}
print "failed\n@out";
'
}
# wait for load < 8
parallel --load 8 echo ::: load_10
parallel -j0 --timeout 10 --nice 18 bzip2 '<' ::: /dev/zero /dev/zero &
pid=$!
check_for_2_bzip2s
parallel --retries 10 '! kill -TERM' ::: $pid 2>/dev/null
}
par_test_diff_roundrobin_k() {
echo '### test there is difference on -k'
. $(which env_parallel.bash)
mytest() {
K=$1
doit() {
# Sleep random time ever 10k line
# to mix up which process gets the next block
perl -ne '$t++ % 1000 or select(undef, undef, undef, rand()/1000);print' |
md5sum
}
export -f doit
seq 1000000 |
parallel --block 65K --pipe $K --roundrobin doit |
sort
}
export -f mytest
parset a,b,c mytest ::: -k -k ''
# a == b and a != c or error
if [ "$a" == "$b" ]; then
if [ "$a" != "$c" ]; then
echo OK
else
echo error a c
fi
else
echo error a b
fi
}
par_lb_mem_usage() {
long_line() {
perl -e 'print "x"x100_000_000'

View file

@ -6,7 +6,7 @@
export SQLITE=sqlite3:///%2Frun%2Fshm%2Fparallel.db
export PG=pg://`whoami`:`whoami`@lo/`whoami`
export MYSQL=mysql://`whoami`:`whoami`@lo/`whoami`
export CSV=csv:///%2Frun%2Fshm/parallel.csv
export CSV=csv:///%2Frun%2Fshm
export DEBUG=false
rm -f /run/shm/parallel.db

View file

@ -1517,6 +1517,12 @@ par_fish_env_parallel() {
set OK OK
echo data from stdin | env_parallel --pipe -S lo --fifo 'cat {}; and echo $OK'
echo data from stdin | env_parallel --pipe -S lo --cat 'cat {}; and echo $OK'
echo OK: 0==$status
echo '### Test failing command with --cat'
echo data from stdin | env_parallel --pipe -S lo --cat 'cat {}; false'
echo OK: 1==$status
echo data from stdin | parallel --pipe -S lo --cat 'cat {}; false'
echo OK: 1==$status
_EOF
)
ssh fish@lo "$myscript"

View file

@ -106,7 +106,6 @@ par_disk_full parallel: Error: Output is incomplete.
par_disk_full parallel: Error: Cannot append to buffer file in /mnt/ram.
par_disk_full parallel: Error: Is the disk full?
par_disk_full parallel: Error: Change $TMPDIR with --tmpdir or use --compress.
par_disk_full Warning: unable to close filehandle properly: No space left on device during global destruction.
par_dryrun_append_joblog --dry-run should not append to joblog
par_dryrun_append_joblog 1
par_dryrun_append_joblog 2

View file

@ -1,3 +1,4 @@
par_bug57364 ### bug #57364: Race condition creating len cache file.
par_linebuffer_files bug #48658: --linebuffer --files
par_linebuffer_files zstd normal
par_linebuffer_files zstd 100000

View file

@ -238,8 +238,6 @@ par_jobs_file Academic tradition requires you to cite works you base your articl
par_jobs_file If you use programs that use GNU Parallel to process data for an article in a
par_jobs_file scientific publication, please cite:
par_jobs_file
par_jobs_file Tange, O. (2020, May 22). GNU Parallel 20200522 ('Kraftwerk').
par_jobs_file Zenodo. https://doi.org/10.5281/zenodo.3840974
par_jobs_file
par_jobs_file This helps funding further development; AND IT WON'T COST YOU A CENT.
par_jobs_file If you pay 10000 EUR you should feel free to use GNU Parallel without citing.
@ -476,6 +474,10 @@ par_maxlinelen_X_I Chars per line (817788/7): 116826
par_maxlinelen_m_I ### Test max line length -m -I
par_maxlinelen_m_I c78bd0799bc23d8946732f8b3ae3c94e -
par_maxlinelen_m_I Chars per line (697800/6): 116300
par_nice Check that --nice works
par_nice load_10
par_nice bzip2 18
par_nice bzip2 18
par_parset ### test parset
par_parset Put output into $myarray
par_parset 10
@ -854,12 +856,13 @@ par_sockets_cores_threads ### Test --use-sockets-instead-of-threads
par_sockets_cores_threads threads done
par_sockets_cores_threads sockets done
par_sockets_cores_threads Threads should complete first on machines with less than 8 sockets
par_test_diff_roundrobin_k ### test there is difference on -k
par_test_diff_roundrobin_k OK
par_tmp_full ### Test --tmpdir running full. bug #40733 was caused by this
par_tmp_full parallel: Error: Output is incomplete.
par_tmp_full parallel: Error: Cannot append to buffer file in /tmp/shm/parallel.
par_tmp_full parallel: Error: Is the disk full?
par_tmp_full parallel: Error: Change $TMPDIR with --tmpdir or use --compress.
par_tmp_full Warning: unable to close filehandle properly: No space left on device during global destruction.
par_tmux_fg bug #50107: --tmux --fg should also write how to access it
par_tmux_fg See output with: tmux -S tmp attach
par_tmux_fg open terminal failed: not a terminal

View file

@ -252,7 +252,7 @@ par_profiles_with_space echo '/bin/bash=/bin/bash'
par_profiles_with_space /bin/bash=/bin/bash
par_profiles_with_space With script in $PARALLEL /bin/bash=~/privat/parallel/testsuite
par_pxz_complains bug #44250: pxz complains File format not recognized but decompresses anyway
par_pxz_complains pxz: execution of xz binary failed: No such file or directory
par_pxz_complains ls: cannot access '/OK-if-missing-file': No such file or directory
par_pxz_complains can not seek in input: Illegal seek
par_pxz_complains ls: cannot access '/OK-if-missing-file': No such file or directory
par_replacement_rename ### Test --basenamereplace

View file

@ -174,11 +174,16 @@ par_retries_unreachable 2
par_test_build_and_install make[0]: Entering directory '~/privat/parallel'
par_test_build_and_install make dist-gzip am__post_remove_distdir='@:'
par_test_build_and_install make[0]: Entering directory '~/privat/parallel'
par_test_build_and_install make distdir-am
par_test_build_and_install make[0]: Entering directory '~/privat/parallel'
par_test_build_and_install 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
par_test_build_and_install test -d "parallel-00000000" || mkdir "parallel-00000000"
par_test_build_and_install (cd src && make top_distdir=../parallel-00000000 distdir=../parallel-00000000/src \
par_test_build_and_install am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)
par_test_build_and_install make[0]: Entering directory '~/privat/parallel/src'
par_test_build_and_install make distdir-am
par_test_build_and_install make[0]: Entering directory '~/privat/parallel/src'
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel/src'
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel/src'
par_test_build_and_install test -n "" \
par_test_build_and_install || find "parallel-00000000" -type d ! -perm -755 \
@ -187,6 +192,7 @@ par_test_build_and_install ! -type d ! -perm -444 -links 1 -exec chmod a+r {}
par_test_build_and_install ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
par_test_build_and_install ! -type d ! -perm -444 -exec /bin/bash ~/privat/parallel/install-sh -c -m a+r {} {} \; \
par_test_build_and_install || chmod -R a+r "parallel-00000000"
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel'
par_test_build_and_install tardir=parallel-00000000 && ${TAR-tar} chof - "$tardir" | eval GZIP= gzip --best -c >parallel-00000000.tar.gz
par_test_build_and_install make[0]: Leaving directory '~/privat/parallel'
par_test_build_and_install 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

View file

@ -1,4 +1,3 @@
par_bug57364 ### bug #57364: Race condition creating len cache file.
par_exit_code bug #52207: Exit status 0 when child job is killed, even with "now,fail=1"
par_exit_code # Ideally the command should return the same
par_exit_code # with or without parallel
@ -9,180 +8,180 @@ par_exit_code ash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code ash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code ash true;/tmp/mysleep 100 137
par_exit_code ash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code ash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code bash /tmp/mysleep 100 0
par_exit_code bash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code bash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code bash true;/tmp/mysleep 100 137
par_exit_code bash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code bash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code ash parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code ash parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code ash parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code csh /tmp/mysleep 100 137
par_exit_code csh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code csh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code csh true;/tmp/mysleep 100 137
par_exit_code csh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code csh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code csh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code csh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code csh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code dash /tmp/mysleep 100 137
par_exit_code dash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code dash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code dash true;/tmp/mysleep 100 137
par_exit_code dash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code dash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code dash parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code dash parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
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 /bin/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;/bin/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
par_exit_code mksh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code mksh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code mksh true;/tmp/mysleep 100 137
par_exit_code mksh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code mksh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code posh /tmp/mysleep 100 137
par_exit_code posh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code posh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code posh true;/tmp/mysleep 100 137
par_exit_code posh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code posh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code rc /tmp/mysleep 100 1
par_exit_code rc parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 /bin/true ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 exit ::: 100 1
par_exit_code rc true;/tmp/mysleep 100 1
par_exit_code rc parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 "true;exit" ::: 100 1
par_exit_code sash /tmp/mysleep 100 255
par_exit_code sash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 255
par_exit_code sash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 255
par_exit_code sash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code sash true;/tmp/mysleep 100 0
par_exit_code sash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 "true;exit" ::: 100 0
par_exit_code sh /tmp/mysleep 100 137
par_exit_code sh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code sh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code sh true;/tmp/mysleep 100 137
par_exit_code sh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code sh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code static-sh /tmp/mysleep 100 137
par_exit_code static-sh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code static-sh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code static-sh true;/tmp/mysleep 100 137
par_exit_code static-sh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code static-sh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code tcsh /tmp/mysleep 100 137
par_exit_code tcsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code tcsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code tcsh true;/tmp/mysleep 100 137
par_exit_code tcsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code tcsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code fdsh /tmp/mysleep 100 137
par_exit_code fdsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 /bin/true ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code fdsh true;/tmp/mysleep 100 137
par_exit_code fdsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
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;/bin/true' ::: 100 0
par_exit_code fish parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code fizsh /tmp/mysleep 100 137
par_exit_code fizsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code fizsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code fizsh true;/tmp/mysleep 100 137
par_exit_code fizsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code fizsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code ksh /tmp/mysleep 100 0
par_exit_code ksh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code ksh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code ksh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code ksh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code ksh true;/tmp/mysleep 100 0
par_exit_code ksh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ksh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ksh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code ksh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code fizsh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code fizsh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code fizsh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code ksh2020 /tmp/mysleep 100 137
par_exit_code ksh2020 parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code ksh2020 parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code ksh2020 parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code ksh2020 parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code ksh2020 true;/tmp/mysleep 100 137
par_exit_code ksh2020 parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code ksh2020 parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code ksh2020 parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code ksh2020 parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code posh /tmp/mysleep 100 137
par_exit_code posh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code posh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code posh true;/tmp/mysleep 100 137
par_exit_code posh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code posh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code posh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code rc /tmp/mysleep 100 1
par_exit_code rc parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code rc parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code rc true;/tmp/mysleep 100 1
par_exit_code rc parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 1
par_exit_code rc parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code rc parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code sash /tmp/mysleep 100 255
par_exit_code sash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 255
par_exit_code sash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 255
par_exit_code sash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code sash true;/tmp/mysleep 100 0
par_exit_code sash parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code sash parallel --halt-on-error now,done=1 'true;exit' ::: 100 0
par_exit_code sh /tmp/mysleep 100 137
par_exit_code sh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code sh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code sh true;/tmp/mysleep 100 137
par_exit_code sh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code sh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code sh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code tcsh /tmp/mysleep 100 137
par_exit_code tcsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code tcsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code tcsh true;/tmp/mysleep 100 137
par_exit_code tcsh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code tcsh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code tcsh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code bash /tmp/mysleep 100 0
par_exit_code bash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code bash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code bash true;/tmp/mysleep 100 137
par_exit_code bash parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code bash parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code bash parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code fdsh /tmp/mysleep 100 137
par_exit_code fdsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 /bin/true ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code fdsh true;/tmp/mysleep 100 137
par_exit_code fdsh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 2
par_exit_code fdsh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code ksh93 /tmp/mysleep 100 0
par_exit_code ksh93 parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code ksh93 parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code ksh93 true;/tmp/mysleep 100 0
par_exit_code ksh93 parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code ksh93 parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code ksh93 parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code ksh93 parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code ksh93 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
par_exit_code mksh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code mksh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code mksh true;/tmp/mysleep 100 137
par_exit_code mksh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code mksh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code mksh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code static-sh /tmp/mysleep 100 0
par_exit_code static-sh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code static-sh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code static-sh true;/tmp/mysleep 100 0
par_exit_code static-sh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code static-sh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code static-sh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code yash /tmp/mysleep 100 0
par_exit_code yash parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code yash parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code yash true;/tmp/mysleep 100 0
par_exit_code yash parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code yash parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code yash parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code yash parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code yash parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code zsh /tmp/mysleep 100 0
par_exit_code zsh parallel --halt-on-error now,fail=1 /tmp/mysleep ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 /tmp/mysleep ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 /bin/true ::: 100 0
par_exit_code zsh parallel --halt-on-error now,done=1 exit ::: 100 100
par_exit_code zsh true;/tmp/mysleep 100 0
par_exit_code zsh parallel --halt-on-error now,fail=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 "true;/tmp/mysleep" ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 "true;/bin/true" ::: 100 0
par_exit_code zsh parallel --halt-on-error now,done=1 "true;exit" ::: 100 100
par_exit_code zsh parallel --halt-on-error now,fail=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 'true;/tmp/mysleep' ::: 100 137
par_exit_code zsh parallel --halt-on-error now,done=1 'true;/bin/true' ::: 100 0
par_exit_code zsh parallel --halt-on-error now,done=1 'true;exit' ::: 100 100
par_exit_code parallel: This job finished:
par_exit_code runit
par_groupby -N1 3 $_%=2 tsv \t ### test tsv | --colsep \t --groupby 3 $_%=2 -N1

View file

@ -198,10 +198,6 @@ par_multiline_commands echo finish 4
par_multiline_commands parallel: Warning: Command lines contain newline. Forcing --null.
par_multiline_commands 4
par_multiline_commands finish 4
par_nice Check that --nice works
par_nice load_10
par_nice bzip2 18
par_nice bzip2 18
par_pipepart_block ### --pipepart --block -# (# < 0)
par_pipepart_block 1
par_pipepart_block 2
@ -426,8 +422,6 @@ par_test_X_with_multiple_source b-b f-f
par_test_X_with_multiple_source c-c d-d
par_test_X_with_multiple_source c-c e-e
par_test_X_with_multiple_source c-c f-f
par_test_diff_roundrobin_k ### test there is difference on -k
par_test_diff_roundrobin_k OK
par_totaljob_repl {##} bug #45841: Replacement string for total no of jobs
par_totaljob_repl 10
par_totaljob_repl 10

View file

@ -262,6 +262,13 @@ par_append $SQLITE hostname|sleep .3;echo 15 D|15|D|15 D
par_append $SQLITE |
par_append $SQLITE hostname|sleep .3;echo 15 E|15|E|15 E
par_append $SQLITE |
par_append $CSV p_wrapper par_append '$CSV'
par_append $CSV Exit=0
par_append $CSV Exit=0
par_append $CSV Error:
par_append $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_append $CSV
par_append $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_empty $MYSQL p_wrapper par_empty '$MYSQL'
par_empty $MYSQL Exit=0
par_empty $MYSQL Exit=0
@ -276,6 +283,13 @@ par_empty $SQLITE p_wrapper par_empty '$SQLITE'
par_empty $SQLITE Exit=0
par_empty $SQLITE Exit=0
par_empty $SQLITE Error: near line 1: no such table: TBL99999
par_empty $CSV p_wrapper par_empty '$CSV'
par_empty $CSV Exit=0
par_empty $CSV Exit=0
par_empty $CSV Error:
par_empty $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_empty $CSV
par_empty $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_shuf $MYSQL p_wrapper par_shuf '$MYSQL'
par_shuf $MYSQL 1 a
par_shuf $MYSQL 1 b
@ -443,6 +457,38 @@ par_shuf $SQLITE hostname|sleep .3;echo 5 b|5|b|/tmp/parallel-bug49791-932/1/5/2
par_shuf $SQLITE hostname|sleep .3;echo 5 c|5|c|/tmp/parallel-bug49791-932/1/5/2/c/stdout|/tmp/parallel-bug49791-932/1/5/2/c/stderr
par_shuf $SQLITE hostname|sleep .3;echo 5 d|5|d|/tmp/parallel-bug49791-932/1/5/2/d/stdout|/tmp/parallel-bug49791-932/1/5/2/d/stderr
par_shuf $SQLITE hostname|sleep .3;echo 5 e|5|e|/tmp/parallel-bug49791-932/1/5/2/e/stdout|/tmp/parallel-bug49791-932/1/5/2/e/stderr
par_shuf $CSV p_wrapper par_shuf '$CSV'
par_shuf $CSV 1 a
par_shuf $CSV 1 b
par_shuf $CSV 1 c
par_shuf $CSV 1 d
par_shuf $CSV 1 e
par_shuf $CSV 2 a
par_shuf $CSV 2 b
par_shuf $CSV 2 c
par_shuf $CSV 2 d
par_shuf $CSV 2 e
par_shuf $CSV 3 a
par_shuf $CSV 3 b
par_shuf $CSV 3 c
par_shuf $CSV 3 d
par_shuf $CSV 3 e
par_shuf $CSV 4 a
par_shuf $CSV 4 b
par_shuf $CSV 4 c
par_shuf $CSV 4 d
par_shuf $CSV 4 e
par_shuf $CSV 5 a
par_shuf $CSV 5 b
par_shuf $CSV 5 c
par_shuf $CSV 5 d
par_shuf $CSV 5 e
par_shuf $CSV Exit=0
par_shuf $CSV Exit=0
par_shuf $CSV Error:
par_shuf $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_shuf $CSV
par_shuf $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker $MYSQL p_wrapper par_sqlandworker '$MYSQL'
par_sqlandworker $MYSQL Exit=0
par_sqlandworker $MYSQL Exit=0
@ -582,6 +628,13 @@ par_sqlandworker $SQLITE hostname|sleep .3;echo 5 d|5|d|5 d
par_sqlandworker $SQLITE |
par_sqlandworker $SQLITE hostname|sleep .3;echo 5 e|5|e|5 e
par_sqlandworker $SQLITE |
par_sqlandworker $CSV p_wrapper par_sqlandworker '$CSV'
par_sqlandworker $CSV Exit=0
par_sqlandworker $CSV Exit=0
par_sqlandworker $CSV Error:
par_sqlandworker $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker $CSV
par_sqlandworker $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker_compress_linebuffer_tag $MYSQL p_wrapper par_sqlandworker_compress_linebuffer_tag '$MYSQL'
par_sqlandworker_compress_linebuffer_tag $MYSQL Exit=0
par_sqlandworker_compress_linebuffer_tag $MYSQL Exit=0
@ -721,6 +774,13 @@ par_sqlandworker_compress_linebuffer_tag $SQLITE hostname|sleep .3;echo 5 d|5|d|
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $SQLITE hostname|sleep .3;echo 5 e|5|e|5 e 5 e
par_sqlandworker_compress_linebuffer_tag $SQLITE |
par_sqlandworker_compress_linebuffer_tag $CSV p_wrapper par_sqlandworker_compress_linebuffer_tag '$CSV'
par_sqlandworker_compress_linebuffer_tag $CSV Exit=0
par_sqlandworker_compress_linebuffer_tag $CSV Exit=0
par_sqlandworker_compress_linebuffer_tag $CSV Error:
par_sqlandworker_compress_linebuffer_tag $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker_compress_linebuffer_tag $CSV
par_sqlandworker_compress_linebuffer_tag $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker_linebuffer $MYSQL p_wrapper par_sqlandworker_linebuffer '$MYSQL'
par_sqlandworker_linebuffer $MYSQL Exit=0
par_sqlandworker_linebuffer $MYSQL Exit=0
@ -860,6 +920,13 @@ par_sqlandworker_linebuffer $SQLITE hostname|sleep .3;echo 5 d|5|d|5 d
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $SQLITE hostname|sleep .3;echo 5 e|5|e|5 e
par_sqlandworker_linebuffer $SQLITE |
par_sqlandworker_linebuffer $CSV p_wrapper par_sqlandworker_linebuffer '$CSV'
par_sqlandworker_linebuffer $CSV Exit=0
par_sqlandworker_linebuffer $CSV Exit=0
par_sqlandworker_linebuffer $CSV Error:
par_sqlandworker_linebuffer $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker_linebuffer $CSV
par_sqlandworker_linebuffer $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker_linebuffer_tag $MYSQL p_wrapper par_sqlandworker_linebuffer_tag '$MYSQL'
par_sqlandworker_linebuffer_tag $MYSQL Exit=0
par_sqlandworker_linebuffer_tag $MYSQL Exit=0
@ -999,6 +1066,13 @@ par_sqlandworker_linebuffer_tag $SQLITE hostname|sleep .3;echo 5 d|5|d|5 d 5 d
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $SQLITE hostname|sleep .3;echo 5 e|5|e|5 e 5 e
par_sqlandworker_linebuffer_tag $SQLITE |
par_sqlandworker_linebuffer_tag $CSV p_wrapper par_sqlandworker_linebuffer_tag '$CSV'
par_sqlandworker_linebuffer_tag $CSV Exit=0
par_sqlandworker_linebuffer_tag $CSV Exit=0
par_sqlandworker_linebuffer_tag $CSV Error:
par_sqlandworker_linebuffer_tag $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker_linebuffer_tag $CSV
par_sqlandworker_linebuffer_tag $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker_lo $MYSQL p_wrapper par_sqlandworker_lo '$MYSQL'
par_sqlandworker_lo $MYSQL Exit=0
par_sqlandworker_lo $MYSQL Exit=0
@ -1138,6 +1212,13 @@ par_sqlandworker_lo $SQLITE lo|sleep .3;echo 5 d|5|d|5 d
par_sqlandworker_lo $SQLITE |
par_sqlandworker_lo $SQLITE lo|sleep .3;echo 5 e|5|e|5 e
par_sqlandworker_lo $SQLITE |
par_sqlandworker_lo $CSV p_wrapper par_sqlandworker_lo '$CSV'
par_sqlandworker_lo $CSV Exit=0
par_sqlandworker_lo $CSV Exit=0
par_sqlandworker_lo $CSV Error:
par_sqlandworker_lo $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker_lo $CSV
par_sqlandworker_lo $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker_results $MYSQL p_wrapper par_sqlandworker_results '$MYSQL'
par_sqlandworker_results $MYSQL Exit=0
par_sqlandworker_results $MYSQL Exit=0
@ -1227,6 +1308,13 @@ par_sqlandworker_results $SQLITE hostname|sleep .3;echo 5 b|5|b|/tmp/out--sql/1/
par_sqlandworker_results $SQLITE hostname|sleep .3;echo 5 c|5|c|/tmp/out--sql/1/5/2/c/stdout|/tmp/out--sql/1/5/2/c/stderr
par_sqlandworker_results $SQLITE hostname|sleep .3;echo 5 d|5|d|/tmp/out--sql/1/5/2/d/stdout|/tmp/out--sql/1/5/2/d/stderr
par_sqlandworker_results $SQLITE hostname|sleep .3;echo 5 e|5|e|/tmp/out--sql/1/5/2/e/stdout|/tmp/out--sql/1/5/2/e/stderr
par_sqlandworker_results $CSV p_wrapper par_sqlandworker_results '$CSV'
par_sqlandworker_results $CSV Exit=0
par_sqlandworker_results $CSV Exit=0
par_sqlandworker_results $CSV Error:
par_sqlandworker_results $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker_results $CSV
par_sqlandworker_results $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker_tag $MYSQL p_wrapper par_sqlandworker_tag '$MYSQL'
par_sqlandworker_tag $MYSQL Exit=0
par_sqlandworker_tag $MYSQL Exit=0
@ -1366,6 +1454,13 @@ par_sqlandworker_tag $SQLITE hostname|sleep .3;echo 5 d|5|d|5 d 5 d
par_sqlandworker_tag $SQLITE |
par_sqlandworker_tag $SQLITE hostname|sleep .3;echo 5 e|5|e|5 e 5 e
par_sqlandworker_tag $SQLITE |
par_sqlandworker_tag $CSV p_wrapper par_sqlandworker_tag '$CSV'
par_sqlandworker_tag $CSV Exit=0
par_sqlandworker_tag $CSV Exit=0
par_sqlandworker_tag $CSV Error:
par_sqlandworker_tag $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker_tag $CSV
par_sqlandworker_tag $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker_total_jobs $MYSQL p_wrapper par_sqlandworker_total_jobs '$MYSQL'
par_sqlandworker_total_jobs $MYSQL Exit=0
par_sqlandworker_total_jobs $MYSQL Exit=0
@ -1555,6 +1650,13 @@ par_sqlandworker_total_jobs $SQLITE |
par_sqlandworker_total_jobs $SQLITE hostname|echo 25 of 25; sleep .3;echo|5|e|25 of 25
par_sqlandworker_total_jobs $SQLITE
par_sqlandworker_total_jobs $SQLITE |
par_sqlandworker_total_jobs $CSV p_wrapper par_sqlandworker_total_jobs '$CSV'
par_sqlandworker_total_jobs $CSV Exit=0
par_sqlandworker_total_jobs $CSV Exit=0
par_sqlandworker_total_jobs $CSV Error:
par_sqlandworker_total_jobs $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker_total_jobs $CSV
par_sqlandworker_total_jobs $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]
par_sqlandworker_unbuffer $MYSQL p_wrapper par_sqlandworker_unbuffer '$MYSQL'
par_sqlandworker_unbuffer $MYSQL Exit=0
par_sqlandworker_unbuffer $MYSQL Exit=0
@ -1644,3 +1746,10 @@ par_sqlandworker_unbuffer $SQLITE hostname|sleep .3;echo 5 b|5|b||
par_sqlandworker_unbuffer $SQLITE hostname|sleep .3;echo 5 c|5|c||
par_sqlandworker_unbuffer $SQLITE hostname|sleep .3;echo 5 d|5|d||
par_sqlandworker_unbuffer $SQLITE hostname|sleep .3;echo 5 e|5|e||
par_sqlandworker_unbuffer $CSV p_wrapper par_sqlandworker_unbuffer '$CSV'
par_sqlandworker_unbuffer $CSV Exit=0
par_sqlandworker_unbuffer $CSV Exit=0
par_sqlandworker_unbuffer $CSV Error:
par_sqlandworker_unbuffer $CSV csv:///%2Frun%2Fshm is not a valid DBURL
par_sqlandworker_unbuffer $CSV
par_sqlandworker_unbuffer $CSV sql [-hnr] [--table-size] [--db-size] [-p pass-through] [-s string] dburl [command]

View file

@ -1452,55 +1452,55 @@ par_fish_underscore ^
par_fish_underscore OK if ^^^^^^^^^^^^^^^^^ no myfunc
par_fish_parset Not implemented
par_fish_man ### fish
par_fish_man Unknown option: no-such-option
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man ### From man env_parallel
par_fish_man aliases with = & " ! ' work
par_fish_man aliases with = & " ! ' work
par_fish_man aliases with = & " ! ' work
par_fish_man aliases with = & " ! ' work
par_fish_man aliases with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man multiline
par_fish_man variables with = & " ! ' work
par_fish_man multiline
par_fish_man variables with = & " ! ' work
par_fish_man multiline
par_fish_man variables with = & " ! ' work
par_fish_man multiline
par_fish_man variables with = & " ! ' work
par_fish_man multiline
par_fish_man variables with = & " ! ' work
par_fish_man arrays
par_fish_man arrays
par_fish_man arrays
par_fish_man arrays
par_fish_man arrays with = & " ! ' work, too
par_fish_man arrays
par_fish_man with = & " ! '
par_fish_man work,
par_fish_man too
par_fish_man arrays
par_fish_man with = & " ! '
par_fish_man work,
par_fish_man too
par_fish_man arrays
par_fish_man with = & " ! '
par_fish_man work,
par_fish_man too
par_fish_man arrays
par_fish_man with = & " ! '
par_fish_man work,
par_fish_man too
par_fish_man multi
par_fish_man level
par_fish_man env_parallel
par_fish_man exit value 2 should be 2
par_fish_man Unknown option: no-such-option
par_fish_man exit value 255 should be 255 `sleep 1`
par_fish_man functions with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man functions with = & " ! ' work
par_fish_man level
par_fish_man multi
par_fish_man multiline
par_fish_man multiline
par_fish_man multiline
par_fish_man multiline
par_fish_man multiline
par_fish_man too
par_fish_man too
par_fish_man too
par_fish_man too
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man variables with = & " ! ' work
par_fish_man with = & " ! '
par_fish_man with = & " ! '
par_fish_man with = & " ! '
par_fish_man with = & " ! '
par_fish_man work,
par_fish_man work,
par_fish_man work,
par_fish_man work,
par_fish_funky env_parallel: Warning: ASCII value 1 in variables is not supported
par_fish_funky 3 arg alias_works
par_fish_funky env_parallel: Warning: ASCII value 1 in variables is not supported
@ -1568,9 +1568,12 @@ par_fish_env_parallel data from stdin
par_fish_env_parallel OK
par_fish_env_parallel data from stdin
par_fish_env_parallel OK
par_fish_env_parallel fish: $? is not the exit status. In fish, please use $status.
par_fish_env_parallel cat $PARALLEL_TMP; and echo $OK;perl -e '$bash=shift;$csh=shift;for(@ARGV){unlink;rmdir;}if($bash=~s/h//){exit$bash;}exit$csh;' "$?h" "$status" $PARALLEL_TMP
par_fish_env_parallel ^
par_fish_env_parallel OK: 0==0
par_fish_env_parallel ### Test failing command with --cat
par_fish_env_parallel data from stdin
par_fish_env_parallel OK: 1==1
par_fish_env_parallel data from stdin
par_fish_env_parallel OK: 1==1
par_dash_underscore ### dash
par_dash_underscore ### Testing of --env _
par_dash_underscore variables in aliases work