-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathdq-prepare
executable file
·66 lines (51 loc) · 1.45 KB
/
dq-prepare
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
#!/bin/bash
D=$(cd `dirname $0` && pwd)
umask 002
function abspath {
bname=$(basename $1)
dirname=$(dirname $1)
absdirname=$(cd $dirname && pwd)
echo "$absdirname/$bname"
}
JOBSCRIPT=$1
if [ ! -r $JOBSCRIPT ]; then
echo "Cannot read $JOBSCRIPT"
exit 1
fi
BDIR=$D/jobs/backend
QDIR=$D/jobs/queue
ADIR=$D/jobs/active
CDIR=$D/jobs/complete
echo -n "Locking..."
mkdir -p $BDIR $QDIR $ADIR $CDIR && touch $BDIR
(
flock -xw 10 200 || {
echo " Timeout!"
echo "Please inspect system with 'dq-status' 'dq-free' etc."
exit 1
}
echo " locked."
touch $BDIR/.jobid # refresh NFS cache
n=$(cat $BDIR/.jobid | sed -e 's/[^0-9]//g')
if [ "x$n" = "x" ] ; then
N=1
else
N=$(( $n + 1 ))
fi
JOBID=$N-$USER
echo $N > $BDIR/.jobid
mkdir $BDIR/$JOBID && cp $JOBSCRIPT $BDIR/$JOBID/runme.sh && chmod +x $BDIR/$JOBID/runme.sh || exit 1
echo /dq:$PATH:$D:$D/scripts > $BDIR/$JOBID/cpath.txt
echo $PWD > $BDIR/$JOBID/cpwd.txt
echo $USER > $BDIR/$JOBID/user.txt
echo $(abspath $JOBSCRIPT) > $BDIR/$JOBID/script.txt
date > $BDIR/$JOBID/queue.txt
echo $(abspath $JOBSCRIPT) > $BDIR/$JOBID/script.txt
set | grep DQ_ | sed 's/^/export /g' > $BDIR/$JOBID/env.txt
if [ "x$KRB5CCNAME" != "x" ]; then
cp $(echo $KRB5CCNAME | sed 's/^[^:]*://') $BDIR/$JOBID/ticket.krb5
chmod g+r $BDIR/$JOBID/ticket.krb5
fi
ln -s "../backend/$JOBID" $QDIR/$JOBID
echo "Job ID: '$JOBID'"
) 200>$BDIR/.lock