-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathdq-kill
executable file
·77 lines (61 loc) · 1.56 KB
/
dq-kill
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
D=$(cd `dirname $0` && pwd)
QDIR=$D/jobs/queue
ADIR=$D/jobs/active
CDIR=$D/jobs/complete
SSH="ssh -q -x -o BatchMode=yes -o ConnectTimeout=10 -o ServerAliveInterval=3"
jobspec="$1"
if [ "x$jobspec" = "x" ]; then
jobspec=$USER
fi
AJOBS=$(ls -1 $ADIR | grep "^$jobspec-")
ACNT=$(echo "$AJOBS" | grep . | wc -l)
if [ $ACNT -eq 0 ]; then
AJOBS=$(ls -1 $ADIR | grep "^$jobspec")
ACNT=$(echo "$AJOBS" | grep . | wc -l)
if [ $ACNT -eq 0 ]; then
AJOBS=$(ls -1 $ADIR | grep "$jobspec")
ACNT=$(echo "$AJOBS" | grep . | wc -l)
fi
fi
if [ $ACNT -gt 0 ]; then
for JOBID in $AJOBS; do
JOBDIR=$ADIR/$JOBID
U=$(cat $JOBDIR/user.txt)
H=$(cat $JOBDIR/host.txt)
echo "Killing $JOBID on $H ..."
KRB5CCNAME=$JOBDIR/ticket.krb5 $SSH -t $U@$H screen -S dq-$JOBID -X "quit
"
done
exit $?
fi
# $ACNT -lt 1
(
echo -n "Locking..."
flock -xw 10 200 || {
echo " Timeout!"
echo "Please inspect system with 'dq-status' 'dq-free' etc."
exit 1
}
echo " locked."
QJOBS=$(ls -1 $QDIR | grep "^$jobspec-")
QCNT=$(echo "$QJOBS" | grep . | wc -l)
if [ $QCNT -eq 0 ]; then
QJOBS=$(ls -1 $QDIR | grep "^$jobspec")
QCNT=$(echo "$QJOBS" | grep . | wc -l)
if [ $QCNT -eq 0 ]; then
QJOBS=$(ls -1 $QDIR | grep "$jobspec")
QCNT=$(echo "$QJOBS" | grep . | wc -l)
fi
fi
if [ $QCNT -gt 0 ]; then
for JOBID in $QJOBS; do
JOBDIR=$QDIR/$JOBID
date > $JOBDIR/abort.txt
echo "Canceling $JOBID ..."
mv $JOBDIR $CDIR
done
exit $?
fi
echo "Could not find matching job for '$jobspec'"
) 200>$QDIR/.lock