mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-12-23 05:07:54 +00:00
parallel: killall() reaps children without doing anything else.
--tmux max length adjusted. Run each testscript in its own $TMPDIR.
This commit is contained in:
parent
d8a1dc1880
commit
fb41b2384c
142
src/parallel
142
src/parallel
|
@ -1051,7 +1051,7 @@ sub parse_options {
|
|||
|
||||
sub init_globals {
|
||||
# Defaults:
|
||||
$Global::version = 20150416;
|
||||
$Global::version = 20150419;
|
||||
$Global::progname = 'parallel';
|
||||
$Global::infinity = 2**31;
|
||||
$Global::debug = 0;
|
||||
|
@ -3046,28 +3046,47 @@ sub killall {
|
|||
# before we start the blood bath
|
||||
my @family_pids = family_pids(keys %Global::running);
|
||||
# Send jobs TERM
|
||||
::debug("kill","TERM ", join(' ',keys %Global::running),"\n");
|
||||
kill "TERM", keys %Global::running;
|
||||
# Wait up to 200 ms
|
||||
# Send jobs TERM (again)
|
||||
my $sleepsum = 0;
|
||||
my $sleep = 0;
|
||||
my $sleep = 0.001;
|
||||
for (; kill(0, keys %Global::running) and $sleepsum < 200;
|
||||
$sleepsum += $sleep) {
|
||||
# This can change %Global::running
|
||||
$sleep = ::reap_usleep($sleep);
|
||||
::debug("kill","Slept $sleepsum\n");
|
||||
if((my $stiff = waitpid(-1, &WNOHANG)) > 0) {
|
||||
::debug("kill","reaped $stiff\n");
|
||||
|
||||
$Global::total_running--;
|
||||
delete $Global::running{$stiff};
|
||||
$sleep = $sleep/2+0.001;
|
||||
}
|
||||
$sleep *= 1.1;
|
||||
::usleep($sleep);
|
||||
}
|
||||
# Send jobs TERM (again)
|
||||
::debug("kill","TERM ", join(' ',keys %Global::running),"\n");
|
||||
kill "TERM", keys %Global::running;
|
||||
# Wait up to 200 ms
|
||||
# Send jobs KILL
|
||||
$sleepsum = 0;
|
||||
$sleep = 0;
|
||||
$sleepsum = 0;
|
||||
$sleep = 0.001;
|
||||
for (; kill(0, keys %Global::running) and $sleepsum < 200;
|
||||
$sleepsum += $sleep) {
|
||||
# This can change %Global::running
|
||||
$sleep = ::reap_usleep($sleep);
|
||||
if((my $stiff = waitpid(-1, &WNOHANG)) > 0) {
|
||||
$Global::total_running--;
|
||||
delete $Global::running{$stiff};
|
||||
$sleep = $sleep/2+0.001;
|
||||
}
|
||||
$sleep *= 1.1;
|
||||
::usleep($sleep);
|
||||
}
|
||||
# Send jobs KILL
|
||||
::debug("kill","KILL ", join(' ',keys %Global::running),"\n");
|
||||
kill "KILL", keys %Global::running;
|
||||
# Send all (grand*)children KILL (if there are any left)
|
||||
::debug("kill","KILL @family_pids\n");
|
||||
kill "KILL", @family_pids;
|
||||
}
|
||||
|
||||
|
@ -7410,55 +7429,63 @@ sub set_exitsignal {
|
|||
}
|
||||
|
||||
|
||||
{
|
||||
my $status_printed;
|
||||
|
||||
sub should_we_halt {
|
||||
# Should we halt? Immediately? Gracefully?
|
||||
# Returns: N/A
|
||||
my $job = shift;
|
||||
if($job->exitstatus()) {
|
||||
$Global::exitstatus++;
|
||||
$Global::total_failed++;
|
||||
if($opt::halt) {
|
||||
if($opt::halt == 1
|
||||
or
|
||||
($opt::halt > 0 and $opt::halt < 1 and $Global::total_failed > 3
|
||||
and
|
||||
$Global::total_failed / $Global::total_started > $opt::halt)) {
|
||||
# If halt on error == 1 or --halt 10%
|
||||
# we should gracefully exit
|
||||
::status
|
||||
("$Global::progname: Starting no more jobs. ",
|
||||
"Waiting for ", scalar(keys %Global::running),
|
||||
" jobs to finish. This job failed:\n",
|
||||
$job->replaced(),"\n");
|
||||
$Global::start_no_new_jobs ||= 1;
|
||||
$Global::halt_exitstatus = $job->exitstatus();
|
||||
} elsif($opt::halt == 2) {
|
||||
# If halt on error == 2 we should exit immediately
|
||||
::status
|
||||
("$Global::progname: This job failed:\n",
|
||||
$job->replaced(),"\n");
|
||||
exit ($job->exitstatus());
|
||||
sub should_we_halt {
|
||||
# Should we halt? Immediately? Gracefully?
|
||||
# Returns: N/A
|
||||
my $job = shift;
|
||||
if($job->exitstatus() or $job->exitsignal()) {
|
||||
$Global::exitstatus++;
|
||||
$Global::total_failed++;
|
||||
if($opt::halt) {
|
||||
if($opt::halt == 1
|
||||
or
|
||||
($opt::halt > 0 and $opt::halt < 1 and $Global::total_failed > 3
|
||||
and
|
||||
$Global::total_failed / $Global::total_started > $opt::halt)) {
|
||||
# If halt on error == 1 or --halt 10%
|
||||
# we should gracefully exit
|
||||
::status
|
||||
("$Global::progname: Starting no more jobs. ",
|
||||
"Waiting for ", scalar(keys %Global::running),
|
||||
" jobs to finish. This job failed:\n",
|
||||
$job->replaced(),"\n");
|
||||
$Global::start_no_new_jobs ||= 1;
|
||||
$Global::halt_exitstatus = $job->exitstatus();
|
||||
} elsif($opt::halt == 2) {
|
||||
# If halt on error == 2 we should exit immediately
|
||||
if(not $status_printed++) {
|
||||
::status
|
||||
("$Global::progname: This job failed:\n",
|
||||
$job->replaced(),"\n");
|
||||
}
|
||||
my $status = $job->exitstatus();
|
||||
::killall();
|
||||
::wait_and_exit($status);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if($opt::halt) {
|
||||
if($opt::halt == -1) {
|
||||
# If halt on error == -1
|
||||
# we should gracefully exit
|
||||
::status
|
||||
("$Global::progname: Starting no more jobs. ",
|
||||
"Waiting for ", scalar(keys %Global::running),
|
||||
" jobs to finish. This job succeeded:\n",
|
||||
$job->replaced(),"\n");
|
||||
$Global::start_no_new_jobs ||= 1;
|
||||
$Global::halt_exitstatus = $job->exitstatus();
|
||||
} elsif($opt::halt == -2) {
|
||||
# If halt on error == -2 we should exit immediately
|
||||
::status
|
||||
("$Global::progname: This job succeeded:\n",
|
||||
$job->replaced(),"\n");
|
||||
exit ($job->exitstatus());
|
||||
} else {
|
||||
if($opt::halt) {
|
||||
if($opt::halt == -1) {
|
||||
# If halt on error == -1
|
||||
# we should gracefully exit
|
||||
::status
|
||||
("$Global::progname: Starting no more jobs. ",
|
||||
"Waiting for ", scalar(keys %Global::running),
|
||||
" jobs to finish. This job succeeded:\n",
|
||||
$job->replaced(),"\n");
|
||||
$Global::start_no_new_jobs ||= 1;
|
||||
$Global::halt_exitstatus = $job->exitstatus();
|
||||
} elsif($opt::halt == -2) {
|
||||
# If halt on error == -2 we should exit immediately
|
||||
::status
|
||||
("$Global::progname: This job succeeded:\n",
|
||||
$job->replaced(),"\n");
|
||||
::killall();
|
||||
::wait_and_exit($job->exitstatus());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8404,9 +8431,10 @@ sub tmux_length {
|
|||
::debug("tmux","tmux-length ",@out);
|
||||
chomp @out;
|
||||
# The arguments is given 3 times on the command line
|
||||
# and the wrapping is around 50 chars
|
||||
# and the wrapping is around 30 chars
|
||||
# (29 for tmux1.9, 33 for tmux1.8)
|
||||
my $tmux_len = (::max(@out));
|
||||
$len = ::min($len,int($tmux_len/4-28));
|
||||
$len = ::min($len,int($tmux_len/4-33));
|
||||
::debug("tmux","tmux-length ",$len);
|
||||
}
|
||||
return $len;
|
||||
|
|
|
@ -234,7 +234,7 @@ You can map the bad limits using:
|
|||
perl -e 'map { $a=$_; print map { "$a,$_\n" } (1..17000) } (1..17000)' | shuf > ab;
|
||||
|
||||
cat ab | parallel --colsep , --tagstring '{1}{=$_="\t"=}{2}'
|
||||
tmux -S /tmp/p{%} new-session -d -n '{=1 $_="O"x$_ =}' true'\ {=2 $_="O"x$_ =};echo $?;rm /tmp/p{%}'
|
||||
tmux -S /tmp/p{%}-'{=1 $_="O"x(rand(200)) =}' new-session -d -n '{=1 $_="O"x$_ =}' true'\ {=2 $_="O"x$_ =};echo $?;rm /tmp/p{%}-O*'
|
||||
> value.csv 2>/dev/null
|
||||
|
||||
R -e 'a<-read.table("value.csv");X11();plot(a[,1],a[,2],col=a[,3]+5,cex=0.1);Sys.sleep(1000)'
|
||||
|
|
|
@ -10,6 +10,7 @@ export TIMEOUT=$MAX_SEC_PER_TEST
|
|||
run_test() {
|
||||
script="$1"
|
||||
base=`basename "$script" .sh`
|
||||
export TMPDIR=/tmp/$base
|
||||
if [ "$TRIES" = "3" ] ; then
|
||||
# Try 3 times
|
||||
bash $script > actual-results/$base
|
||||
|
|
|
@ -143,7 +143,13 @@ echo '### bug #44614: --pipepart --header off by one'
|
|||
echo '### TMUX not found'
|
||||
TMUX=not-existing parallel --tmux echo ::: 1
|
||||
|
||||
echo '**'
|
||||
|
||||
parallel --halt 2 ::: 'sleep 1' burnP6 false; killall burnP6 && echo ERROR: burnP6 should be killed
|
||||
parallel --halt -2 ::: 'sleep 1' burnP5 true; killall burnP5 && echo ERROR: burnP5 should be killed
|
||||
|
||||
EOF
|
||||
echo '### 1 .par file from --files expected'
|
||||
ls /tmp/par*.par /var/tmp/par*.par /tmp/*.tms /tmp/*.tmx 2>/dev/null | wc -l
|
||||
find /tmp/par*.par /var/tmp/par*.par /tmp/*.tms /tmp/*.tmx -mmin -10 2>/dev/null | parallel rm
|
||||
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | wc -l
|
||||
find /tmp{/*,}/*.{par,tms,tmx} 2>/dev/null -mmin -10 | parallel rm
|
||||
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
# /tmp/parallel-local-ssh2 will by default be owned by me and should be writable by *@localhost
|
||||
chmod 777 "$TMPDIR" 2>/dev/null
|
||||
|
||||
cat <<'EOF' | sed -e s/\$SERVER1/$SERVER1/\;s/\$SERVER2/$SERVER2/ | stdout parallel -vj5 -k --joblog /tmp/jl-`basename $0` -L1
|
||||
echo "### bug #43518: GNU Parallel doesn't obey servers' jobs capacity when an ssh login file is reloaded"
|
||||
# Pre-20141106 Would reset the number of jobs run on all sshlogin if --slf changed
|
||||
|
@ -42,8 +45,8 @@ echo '2bug #43358: shellshock breaks exporting functions using --env'
|
|||
echo '### bug #42999: --pipepart with remote does not work'
|
||||
seq 100 > /tmp/bug42999; chmod 600 /tmp/bug42999;
|
||||
parallel --sshdelay 0.3 --pipepart --block 31 -a /tmp/bug42999 -k -S parallel@lo wc;
|
||||
parallel --sshdelay 0.2 --pipepart --block 31 -a /tmp/bug42999 -k --fifo -S parallel@lo wc | perl -pe 's:/tmp/fifo\d+:/tmp/fifo0000:' ;
|
||||
parallel --sshdelay 0.1 --pipepart --block 31 -a /tmp/bug42999 -k --cat -S parallel@lo wc | perl -pe 's:/tmp/cat\d+:/tmp/cat0000:' ;
|
||||
parallel --sshdelay 0.2 --pipepart --block 31 -a /tmp/bug42999 -k --fifo -S parallel@lo wc | perl -pe 's:(/tmp\S+fifo)\d+:${1}0000:' ;
|
||||
parallel --sshdelay 0.1 --pipepart --block 31 -a /tmp/bug42999 -k --cat -S parallel@lo wc | perl -pe 's:(/tmp\S+cat)\d+:${1}0000:' ;
|
||||
rm /tmp/bug42999
|
||||
|
||||
echo '### --cat gives incorrect exit value in csh'
|
||||
|
|
|
@ -46,8 +46,8 @@ echo '### bug #42041: Implement $PARALLEL_JOBSLOT'
|
|||
|
||||
echo '### bug #42363: --pipepart and --fifo/--cat does not work'
|
||||
seq 100 > /tmp/bug42363;
|
||||
parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:/tmp/fifo\d+:/tmp/fifo0000:';
|
||||
parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:/tmp/cat\d+:/tmp/cat0000:';
|
||||
parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:(/tmp\S+fifo)\d+:${1}0000:';
|
||||
parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:(/tmp\S+cat)\d+:${1}0000:';
|
||||
rm /tmp/bug42363
|
||||
|
||||
echo '### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile'
|
||||
|
@ -120,7 +120,7 @@ echo '### added transfersize/returnsize to local jobs'
|
|||
echo '### --tmux test - check termination'
|
||||
perl -e 'map {printf "$_%o%c\n",$_,$_}1..255' |
|
||||
stdout parallel --tmux echo {} :::: - ::: a b |
|
||||
perl -pe 's:/tmp/par......tms:/tmp/parXXXXX.tms:;'
|
||||
perl -pe 's:(/tmp\S+par)......tms:$1XXXXX.tms:;'
|
||||
|
||||
EOF
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ par_tmux() {
|
|||
(stdout parallel --timeout 3 --tmux --delay .3 echo '{}{=$_="\\"x$_=}'; echo $?) | par_tmux_filter
|
||||
}
|
||||
export -f par_tmux
|
||||
#j8
|
||||
cat <<'EOF' | sed -e 's/;$/; /;s/$SERVER1/'$SERVER1'/;s/$SERVER2/'$SERVER2'/' | stdout parallel -vj0 --retries 2 -k --joblog /tmp/jl-`basename $0` -L1
|
||||
echo '### tmux1.9'
|
||||
seq 000 100 | TMUX=tmux1.9 par_tmux
|
||||
|
@ -32,8 +31,11 @@ echo '### tmux1.9'
|
|||
seq 1700 1800 | TMUX=tmux1.9 par_tmux
|
||||
seq 1800 1900 | TMUX=tmux1.9 par_tmux
|
||||
seq 1900 2000 | TMUX=tmux1.9 par_tmux
|
||||
seq 2000 2021 | TMUX=tmux1.9 par_tmux
|
||||
seq 2000 2018 | TMUX=tmux1.9 par_tmux
|
||||
echo '### tmux1.9 fails'
|
||||
echo 2019 | TMUX=tmux1.9 par_tmux
|
||||
echo 2020 | TMUX=tmux1.9 par_tmux
|
||||
echo 2021 | TMUX=tmux1.9 par_tmux
|
||||
echo 2022 | TMUX=tmux1.9 par_tmux
|
||||
|
||||
echo '### tmux1.8'
|
||||
|
@ -41,8 +43,9 @@ echo '### tmux1.8'
|
|||
seq 51 100 | TMUX=tmux1.8 par_tmux
|
||||
seq 101 150 | TMUX=tmux1.8 par_tmux
|
||||
seq 151 200 | TMUX=tmux1.8 par_tmux
|
||||
seq 201 232 | TMUX=tmux1.8 par_tmux
|
||||
seq 201 231 | TMUX=tmux1.8 par_tmux
|
||||
echo '### tmux1.8 fails'
|
||||
echo 232 | TMUX=tmux1.8 par_tmux
|
||||
echo 233 | TMUX=tmux1.8 par_tmux
|
||||
echo 234 | TMUX=tmux1.8 par_tmux
|
||||
echo 235 | TMUX=tmux1.8 par_tmux
|
||||
|
|
0
testsuite/tests-to-run/parallel-polarhome.sh
Normal file → Executable file
0
testsuite/tests-to-run/parallel-polarhome.sh
Normal file → Executable file
|
@ -23,9 +23,9 @@ perl -ne '$/="\n\n"; /^Output/../^[^O]\S/ and next; /^ / and print;' ../../src/
|
|||
stdout parallel -j7 -vd'\n\n' |
|
||||
perl -pe '$|=1;
|
||||
# --tmux
|
||||
s:/tmp/........../t\d+:/tmp/tmuxtmp:;
|
||||
s:(/tmp\S+par).....(/tms):$1XXXXX$2:;
|
||||
# --files
|
||||
s:/tmp/par......(...):/tmp/parXXXXX.$1:;
|
||||
s:(/tmp\S+par).....(....):$1XXXXX$2:;
|
||||
# --eta --progress
|
||||
s/ETA.*//g; s/local:.*//g;
|
||||
# Sat Apr 4 11:55:40 CEST 2015
|
||||
|
|
|
@ -307,5 +307,15 @@ echo '### TMUX not found'
|
|||
### TMUX not found
|
||||
TMUX=not-existing parallel --tmux echo ::: 1
|
||||
parallel: Error: not-existing not found in $PATH.
|
||||
echo '**'
|
||||
**
|
||||
parallel --halt 2 ::: 'sleep 1' burnP6 false; killall burnP6 && echo ERROR: burnP6 should be killed
|
||||
parallel: This job failed:
|
||||
false
|
||||
burnP6: no process found
|
||||
parallel --halt -2 ::: 'sleep 1' burnP5 true; killall burnP5 && echo ERROR: burnP5 should be killed
|
||||
parallel: This job succeeded:
|
||||
true
|
||||
burnP5: no process found
|
||||
### 1 .par file from --files expected
|
||||
1
|
||||
|
|
|
@ -44,7 +44,7 @@ shellshock-hardened to non-shellshock-hardened
|
|||
Function non-shellshock-hardened
|
||||
echo '### bug #42999: --pipepart with remote does not work'
|
||||
### bug #42999: --pipepart with remote does not work
|
||||
seq 100 > /tmp/bug42999; chmod 600 /tmp/bug42999; parallel --sshdelay 0.3 --pipepart --block 31 -a /tmp/bug42999 -k -S parallel@lo wc; parallel --sshdelay 0.2 --pipepart --block 31 -a /tmp/bug42999 -k --fifo -S parallel@lo wc | perl -pe 's:/tmp/fifo\d+:/tmp/fifo0000:' ; parallel --sshdelay 0.1 --pipepart --block 31 -a /tmp/bug42999 -k --cat -S parallel@lo wc | perl -pe 's:/tmp/cat\d+:/tmp/cat0000:' ; rm /tmp/bug42999
|
||||
seq 100 > /tmp/bug42999; chmod 600 /tmp/bug42999; parallel --sshdelay 0.3 --pipepart --block 31 -a /tmp/bug42999 -k -S parallel@lo wc; parallel --sshdelay 0.2 --pipepart --block 31 -a /tmp/bug42999 -k --fifo -S parallel@lo wc | perl -pe 's:(/tmp\S+fifo)\d+:${1}0000:' ; parallel --sshdelay 0.1 --pipepart --block 31 -a /tmp/bug42999 -k --cat -S parallel@lo wc | perl -pe 's:(/tmp\S+cat)\d+:${1}0000:' ; rm /tmp/bug42999
|
||||
14 14 33
|
||||
11 11 33
|
||||
11 11 33
|
||||
|
@ -54,24 +54,24 @@ echo '### bug #42999: --pipepart with remote does not work'
|
|||
11 11 33
|
||||
11 11 33
|
||||
9 9 28
|
||||
14 14 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
9 9 28 /tmp/fifo0000
|
||||
14 14 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
9 9 28 /tmp/cat0000
|
||||
14 14 33 /tmp/parallel-local-ssh2/fifo0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/fifo0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/fifo0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/fifo0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/fifo0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/fifo0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/fifo0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/fifo0000
|
||||
9 9 28 /tmp/parallel-local-ssh2/fifo0000
|
||||
14 14 33 /tmp/parallel-local-ssh2/cat0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/cat0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/cat0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/cat0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/cat0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/cat0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/cat0000
|
||||
11 11 33 /tmp/parallel-local-ssh2/cat0000
|
||||
9 9 28 /tmp/parallel-local-ssh2/cat0000
|
||||
echo '### --cat gives incorrect exit value in csh'
|
||||
### --cat gives incorrect exit value in csh
|
||||
echo false | parallel --pipe --cat -Scsh@lo 'cat {}; false' ; echo $?; echo false | parallel --pipe --cat -Stcsh@lo 'cat {}; false' ; echo $?; echo true | parallel --pipe --cat -Scsh@lo 'cat {}; true' ; echo $?; echo true | parallel --pipe --cat -Stcsh@lo 'cat {}; true' ; echo $?; echo '### --cat and --fifo exit value in bash'
|
||||
|
|
|
@ -48,7 +48,7 @@ echo '### works'
|
|||
### works
|
||||
stdout parallel -Sparallel@lo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'See output'
|
||||
stdout parallel -Sparallel@lo --tmux echo ::: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | grep -v 'See output'
|
||||
parallel: Error: Command line too long (402 >= 238) at input 0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
|
||||
parallel: Error: Command line too long (402 >= 236) at input 0: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...
|
||||
echo '### These blocked due to length'
|
||||
### These blocked due to length
|
||||
stdout parallel -Slo --tmux echo ::: \\\\\\\"\\\\\\\"\\\;\@ | grep -v 'See output'
|
||||
|
|
|
@ -43,25 +43,25 @@ echo '### bug #42041: Implement $PARALLEL_JOBSLOT'
|
|||
2
|
||||
echo '### bug #42363: --pipepart and --fifo/--cat does not work'
|
||||
### bug #42363: --pipepart and --fifo/--cat does not work
|
||||
seq 100 > /tmp/bug42363; parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:/tmp/fifo\d+:/tmp/fifo0000:'; parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:/tmp/cat\d+:/tmp/cat0000:'; rm /tmp/bug42363
|
||||
14 14 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
11 11 33 /tmp/fifo0000
|
||||
9 9 28 /tmp/fifo0000
|
||||
14 14 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
11 11 33 /tmp/cat0000
|
||||
9 9 28 /tmp/cat0000
|
||||
seq 100 > /tmp/bug42363; parallel --pipepart --block 31 -a /tmp/bug42363 -k --fifo wc | perl -pe 's:(/tmp\S+fifo)\d+:${1}0000:'; parallel --pipepart --block 31 -a /tmp/bug42363 -k --cat wc | perl -pe 's:(/tmp\S+cat)\d+:${1}0000:'; rm /tmp/bug42363
|
||||
14 14 33 /tmp/parallel-local22/fifo0000
|
||||
11 11 33 /tmp/parallel-local22/fifo0000
|
||||
11 11 33 /tmp/parallel-local22/fifo0000
|
||||
11 11 33 /tmp/parallel-local22/fifo0000
|
||||
11 11 33 /tmp/parallel-local22/fifo0000
|
||||
11 11 33 /tmp/parallel-local22/fifo0000
|
||||
11 11 33 /tmp/parallel-local22/fifo0000
|
||||
11 11 33 /tmp/parallel-local22/fifo0000
|
||||
9 9 28 /tmp/parallel-local22/fifo0000
|
||||
14 14 33 /tmp/parallel-local22/cat0000
|
||||
11 11 33 /tmp/parallel-local22/cat0000
|
||||
11 11 33 /tmp/parallel-local22/cat0000
|
||||
11 11 33 /tmp/parallel-local22/cat0000
|
||||
11 11 33 /tmp/parallel-local22/cat0000
|
||||
11 11 33 /tmp/parallel-local22/cat0000
|
||||
11 11 33 /tmp/parallel-local22/cat0000
|
||||
11 11 33 /tmp/parallel-local22/cat0000
|
||||
9 9 28 /tmp/parallel-local22/cat0000
|
||||
echo '### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile'
|
||||
### bug #42055: --pipepart -a bigfile should not require sequential reading of bigfile
|
||||
parallel --pipepart -a /etc/passwd -L 1 should not be run
|
||||
|
@ -353,5 +353,5 @@ Send Receive Exitval
|
|||
Send Receive Exitval
|
||||
echo '### --tmux test - check termination'
|
||||
### --tmux test - check termination
|
||||
perl -e 'map {printf "$_%o%c\n",$_,$_}1..255' | stdout parallel --tmux echo {} :::: - ::: a b | perl -pe 's:/tmp/par......tms:/tmp/parXXXXX.tms:;'
|
||||
See output with: tmux -S /tmp/parXXXXX.tms attach
|
||||
perl -e 'map {printf "$_%o%c\n",$_,$_}1..255' | stdout parallel --tmux echo {} :::: - ::: a b | perl -pe 's:(/tmp\S+par)......tms:$1XXXXX.tms:;'
|
||||
See output with: tmux -S /tmp/parallel-local22/parXXXXX.tms attach
|
||||
|
|
|
@ -1,127 +1,138 @@
|
|||
echo '### tmux1.9'
|
||||
### tmux1.9
|
||||
seq 000 100 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 100 200 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 200 300 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 300 400 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 400 500 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 500 600 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 600 700 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 700 800 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 800 900 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 900 1000 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1000 1100 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1100 1200 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1200 1300 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1300 1400 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1400 1500 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1500 1600 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1600 1700 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1700 1800 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1800 1900 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 1900 2000 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 2000 2021 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
seq 2000 2018 | TMUX=tmux1.9 par_tmux
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
echo '### tmux1.9 fails'
|
||||
### tmux1.9 fails
|
||||
echo 2019 | TMUX=tmux1.9 par_tmux
|
||||
parallel: Error: Command line too long (4047 >= 4047) at input 0: 2019
|
||||
255
|
||||
echo 2020 | TMUX=tmux1.9 par_tmux
|
||||
parallel: Error: Command line too long (4049 >= 4047) at input 0: 2020
|
||||
255
|
||||
echo 2021 | TMUX=tmux1.9 par_tmux
|
||||
parallel: Error: Command line too long (4051 >= 4047) at input 0: 2021
|
||||
255
|
||||
echo 2022 | TMUX=tmux1.9 par_tmux
|
||||
parallel: Error: Command line too long (4053 >= 4052) at input 0: 2022
|
||||
parallel: Error: Command line too long (4053 >= 4047) at input 0: 2022
|
||||
255
|
||||
echo '### tmux1.8'
|
||||
### tmux1.8
|
||||
seq 1 50 | TMUX=tmux1.8 par_tmux
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.8 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 51 100 | TMUX=tmux1.8 par_tmux
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.8 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 101 150 | TMUX=tmux1.8 par_tmux
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.8 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 151 200 | TMUX=tmux1.8 par_tmux
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.8 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
seq 201 232 | TMUX=tmux1.8 par_tmux
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
seq 201 231 | TMUX=tmux1.8 par_tmux
|
||||
See output with: tmux1.8 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
echo '### tmux1.8 fails'
|
||||
### tmux1.8 fails
|
||||
echo 232 | TMUX=tmux1.8 par_tmux
|
||||
parallel: Error: Command line too long (472 >= 472) at input 0: 232
|
||||
255
|
||||
echo 233 | TMUX=tmux1.8 par_tmux
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
0
|
||||
parallel: Error: Command line too long (474 >= 472) at input 0: 233
|
||||
255
|
||||
echo 234 | TMUX=tmux1.8 par_tmux
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
command too long
|
||||
1
|
||||
parallel: Error: Command line too long (476 >= 472) at input 0: 234
|
||||
255
|
||||
echo 235 | TMUX=tmux1.8 par_tmux
|
||||
parallel: Error: Command line too long (478 >= 477) at input 0: 235
|
||||
parallel: Error: Command line too long (478 >= 472) at input 0: 235
|
||||
255
|
||||
echo 236 | TMUX=tmux1.8 par_tmux
|
||||
parallel: Error: Command line too long (480 >= 477) at input 0: 236
|
||||
parallel: Error: Command line too long (480 >= 472) at input 0: 236
|
||||
255
|
||||
echo '### tmux1.8 0..255 ascii'
|
||||
### tmux1.8 0..255 ascii
|
||||
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' | TMUX=tmux1.8 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.8 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
echo '### tmux1.9 0..255 ascii'
|
||||
### tmux1.9 0..255 ascii
|
||||
perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_>=1 && $_!=10 } 0..$_),"\n" } 0..255' | TMUX=tmux1.9 stdout parallel --tmux --timeout 3 echo | par_tmux_filter; echo $?
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
0
|
||||
echo '### Test output ascii'
|
||||
### Test output ascii
|
||||
rm -f /tmp/paralocal7*; perl -e 'print map { ($_, map { pack("c*",$_) } grep { $_!=10 } 1..$_),"\n" } 1..255' | stdout parallel --tmux echo {}'>>/tmp/paralocal7{%}' | par_tmux_filter; sort /tmp/paralocal7* | md5sum
|
||||
See output with: tmux -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
a7ee232967c8aab2edf227169e8cdce0 -
|
||||
echo '### Test critical lengths. Must not block'
|
||||
### Test critical lengths. Must not block
|
||||
seq 70 130 | TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.8 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
seq 70 130 | TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="&"x$_=}' | par_tmux_filter
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
seq 280 425 | TMUX=tmux1.8 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
|
||||
See output with: tmux1.8 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.8 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
seq 280 425 | TMUX=tmux1.9 stdout parallel --tmux echo '{}{=$_="a"x$_=}' | par_tmux_filter
|
||||
See output with: tmux1.9 -S /tmp/parXXXXX.tms attach
|
||||
See output with: tmux1.9 -S /tmp/parallel-local7/parXXXXX.tms attach
|
||||
|
|
|
@ -345,9 +345,9 @@ echo C
|
|||
1-middle
|
||||
1-end
|
||||
parallel --files echo ::: A B C
|
||||
/tmp/parXXXXX.par
|
||||
/tmp/parXXXXX.par
|
||||
/tmp/parXXXXX.par
|
||||
/tmp/parallel-tutorial/parXXXXX.par
|
||||
/tmp/parallel-tutorial/parXXXXX.par
|
||||
/tmp/parallel-tutorial/parXXXXX.par
|
||||
parallel --tmpdir /var/tmp --files echo ::: A B C
|
||||
/var/tmp/parXXXXX.par
|
||||
/var/tmp/parXXXXX.par
|
||||
|
@ -406,7 +406,7 @@ B D
|
|||
parallel --use-cpus-instead-of-cores -N0 sleep 1 :::: num8
|
||||
|
||||
seq 10 20 | parallel --tmux 'echo start {}; sleep {}; echo done {}'
|
||||
See output with: tmux -S /tmp/parXXXXX.tmux attach
|
||||
See output with: tmux -S /tmp/parallel-tutorial/parXXXXX.tms attach
|
||||
tmux -S /tmp/parXXXXX.tms attach
|
||||
no sessions
|
||||
parallel --delay 2.5 echo Starting {}\;date ::: 1 2 3
|
||||
|
|
Loading…
Reference in a new issue