mirror of
https://git.savannah.gnu.org/git/parallel.git
synced 2024-11-24 15:07:55 +00:00
Fixed bug #59146: Support --termseq for remote jobs.
This commit is contained in:
parent
69cca79c3b
commit
95eb81b901
14
src/parallel
14
src/parallel
|
@ -9063,6 +9063,7 @@ sub sshlogin_wrap($) {
|
|||
::spacefree(0,'$shell = "'.($ENV{'PARALLEL_SHELL'} || '$ENV{SHELL}').'";'.
|
||||
'$tmpdir = "'.::perl_quote_scalar($ENV{'TMPDIR'}).'";'.
|
||||
'$nice = '.$opt::nice.';'.
|
||||
'$termseq = "'.$opt::termseq.'";'.
|
||||
q{
|
||||
# Set $PARALLEL_TMP to a non-existent file name in $TMPDIR
|
||||
do {
|
||||
|
@ -9084,8 +9085,17 @@ sub sshlogin_wrap($) {
|
|||
$s = $s < 1 ? 0.001 + $s * 1.03 : $s;
|
||||
select(undef, undef, undef, $s);
|
||||
} until ($done || getppid == 1);
|
||||
# Kill HUP the process group if job not done
|
||||
kill(SIGHUP, -${pid}) unless $done;
|
||||
if(not $done) {
|
||||
# Kill as per --termseq
|
||||
my @term_seq = split/,/,$termseq;
|
||||
if(not @term_seq) {
|
||||
@term_seq = ("TERM",200,"TERM",100,"TERM",50,"KILL",25);
|
||||
}
|
||||
while(@term_seq && kill(0,-$pid)) {
|
||||
kill(shift @term_seq, -$pid);
|
||||
select(undef, undef, undef, (shift @term_seq)/1000);
|
||||
}
|
||||
}
|
||||
wait;
|
||||
exit ($?&127 ? 128+($?&127) : 1+$?>>8)
|
||||
});
|
||||
|
|
|
@ -6,6 +6,40 @@ export SSHLOGIN1=parallel@lo
|
|||
export SSHLOGIN2=csh@lo
|
||||
mkdir -p tmp
|
||||
|
||||
par_termseq_remote() {
|
||||
echo '### bug #59146: Support --termseq for remote jobs'
|
||||
doit() {
|
||||
# setup signal handlers for all signals
|
||||
exec perl -e '
|
||||
$file = shift;
|
||||
for $i (qw(
|
||||
HUP INT QUIT ILL TRAP
|
||||
ABRT BUS FPE KILL USR1
|
||||
SEGV USR2 PIPE ALRM TERM
|
||||
STKFLT CHLD CONT STOP TSTP
|
||||
TTIN TTOU URG XCPU XFSZ
|
||||
VTALRM PROF WINCH IO PWR
|
||||
SYS RTMIN RTMIN+1 RTMIN+2 RTMIN+3
|
||||
RTMIN+4 RTMIN+5 RTMIN+6 RTMIN+7 RTMIN+8
|
||||
RTMIN+9 RTMIN+10 RTMIN+11 RTMIN+12 RTMIN+13
|
||||
RTMIN+14 RTMIN+15 RTMAX-14 RTMAX-13 RTMAX-12
|
||||
RTMAX-11 RTMAX-10 RTMAX-9 RTMAX-8 RTMAX-7
|
||||
RTMAX-6 RTMAX-5 RTMAX-4 RTMAX-3 RTMAX-2
|
||||
RTMAX-1 RTMAX
|
||||
)) {
|
||||
eval q[$SIG{].$i.q[}=sub{open(A,">>$file");print A "].$i.q[\n";};];
|
||||
}
|
||||
for(1..100) { sleep(1);}
|
||||
' $file
|
||||
}
|
||||
file=/tmp/sig$$
|
||||
. `which env_parallel.bash`
|
||||
env_parallel -v --timeout 2 --termseq HUP,30,INT,30,QUIT,30,ILL,30,TRAP,30,ABRT,30,BUS,30,FPE,30,USR1,30,SEGV,30,USR2,30,PIPE,30,ALRM,30,TERM,30,STKFLT,30,CHLD,30,CONT,30,TSTP,30,TTIN,30,TTOU,30,URG,30,XCPU,30,XFSZ,30,VTALRM,30,PROF,30,WINCH,30,IO,30,PWR,30,SYS,30,RTMIN,30,RTMAX,30,KILL,9 -S $SSHLOGIN1 doit ::: 1
|
||||
sleep 1
|
||||
cat $file
|
||||
ssh $SSHLOGIN1 rm $file
|
||||
}
|
||||
|
||||
par_nonall_ssh() {
|
||||
echo 'bug #59181: --ssh is not propagated to --nonall'
|
||||
parallel --ssh 'echo OK | ssh' -S $SSHLOGIN1 --nonall cat
|
||||
|
|
|
@ -34,6 +34,40 @@ par_rsync_3.2.3 bug59006
|
|||
par_sshlogin_replacement ### show {sshlogin} and {host}
|
||||
par_sshlogin_replacement parallel@lo and lo
|
||||
par_sshlogin_replacement /usr/bin/ssh parallel@lo and lo
|
||||
par_termseq_remote ### bug #59146: Support --termseq for remote jobs
|
||||
par_termseq_remote parallel: Warning: This job was killed because it timed out:
|
||||
par_termseq_remote parallel: Warning: doit 1
|
||||
par_termseq_remote doit 1
|
||||
par_termseq_remote HUP
|
||||
par_termseq_remote INT
|
||||
par_termseq_remote QUIT
|
||||
par_termseq_remote ILL
|
||||
par_termseq_remote TRAP
|
||||
par_termseq_remote ABRT
|
||||
par_termseq_remote BUS
|
||||
par_termseq_remote FPE
|
||||
par_termseq_remote USR1
|
||||
par_termseq_remote SEGV
|
||||
par_termseq_remote USR2
|
||||
par_termseq_remote PIPE
|
||||
par_termseq_remote ALRM
|
||||
par_termseq_remote TERM
|
||||
par_termseq_remote STKFLT
|
||||
par_termseq_remote CHLD
|
||||
par_termseq_remote CONT
|
||||
par_termseq_remote TSTP
|
||||
par_termseq_remote TTIN
|
||||
par_termseq_remote TTOU
|
||||
par_termseq_remote URG
|
||||
par_termseq_remote XCPU
|
||||
par_termseq_remote XFSZ
|
||||
par_termseq_remote VTALRM
|
||||
par_termseq_remote PROF
|
||||
par_termseq_remote WINCH
|
||||
par_termseq_remote IO
|
||||
par_termseq_remote PWR
|
||||
par_termseq_remote SYS
|
||||
par_termseq_remote RTMIN
|
||||
par_test_nonall ### Test --nonall
|
||||
par_test_nonall /home/csh
|
||||
par_test_nonall /home/parallel
|
||||
|
|
Loading…
Reference in a new issue