Prerelease 1.1.0

* fix bug with moving root (ooops)
* changes in work
This commit is contained in:
arcan1s 2013-12-23 04:39:08 +04:00
parent 4ed7bc7f90
commit c50b0a1bcd
3 changed files with 26 additions and 40 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
qdtest/*

View File

@ -20,7 +20,7 @@ func_help() {
func_ver() { func_ver() {
echo -e " queued " echo -e " queued "
echo -e "Simple daemon for starting jobs to queue of calculations" echo -e "Simple daemon for starting jobs to queue of calculations"
echo -e "Version : 1.0.0 License : GPLv3" echo -e "Version : 1.1.0 License : GPLv3"
echo -e "Author : Evgeniy Alexeev aka arcanis" echo -e "Author : Evgeniy Alexeev aka arcanis"
echo -e "E-mail : esalexeev (at) gmail.com" echo -e "E-mail : esalexeev (at) gmail.com"
exit 0 exit 0
@ -100,6 +100,9 @@ if [ ! -d "$(dirname "$QUEUEFILE")" ]; then
fi fi
echo "[II]: Create directory '$(dirname "$QUEUEFILE")'" echo "[II]: Create directory '$(dirname "$QUEUEFILE")'"
mkdir -m777 -p "$(dirname "$QUEUEFILE")" || (echo "[EE] Unknown error"; exit 1) mkdir -m777 -p "$(dirname "$QUEUEFILE")" || (echo "[EE] Unknown error"; exit 1)
echo "[II]: Create file '$QUEUEFILE'"
touch "$QUEUEFILE" || (echo "[EE] Unknown error"; exit 1)
chmod 777 "$QUEUEFILE"
fi fi
# check priority # check priority
isnum "$PRIORITY" || (echo "[EE]: '$PRIORITY' isn't a number"; exit 1) isnum "$PRIORITY" || (echo "[EE]: '$PRIORITY' isn't a number"; exit 1)
@ -108,7 +111,6 @@ isnum "$PRIORITY" || (echo "[EE]: '$PRIORITY' isn't a number"; exit 1)
# work block # work block
# change cwd # change cwd
cd / cd /
# output to /dev/null
< /dev/null > /dev/null 2>&1 & < /dev/null > /dev/null 2>&1 &
# forking # forking
@ -130,30 +132,7 @@ cd /
CURJOB_PRIOR="$PRIORITY" CURJOB_PRIOR="$PRIORITY"
fi fi
echo "[II] Setting priority to '$CURJOB_PRIOR'" echo "[II] Setting priority to '$CURJOB_PRIOR'"
if [ ! -e "$QUEUEFILE" ]; then echo "$CURJOB_PRIOR==$WORKDIR/$FILE" >> "$QUEUEFILE"
echo "$CURJOB_PRIOR==$WORKDIR/$FILE" > "$QUEUEFILE"
chmod 777 "$QUEUEFILE"
else
if [[ $(cat "$QUEUEFILE") = "" ]]; then
echo "$CURJOB_PRIOR==$WORKDIR/$FILE" >> "$QUEUEFILE"
else
LASTLINE=""
for JOB in $(cat "$QUEUEFILE"); do
JOB_PRIOR=$(echo "$JOB" | awk -F "==" '{print $1}')
if [[ $JOB_PRIOR < $CURJOB_PRIOR ]]; then
LASTLINE="$JOB"
continue
fi
if [ -z "$LASTLINE" ]; then
sed -i '1i '"$CURJOB_PRIOR==$WORKDIR/$FILE" "$QUEUEFILE"
else
sed -i '/'$LASTLINE'/a '"$CURJOB_PRIOR==$WORKDIR/$FILE" "$QUEUEFILE"
fi
break
done
grep --quiet "$WORKDIR/$FILE" "$QUEUEFILE" || echo "$CURJOB_PRIOR==$WORKDIR/$FILE" >> "$QUEUEFILE"
fi
fi
done done
# check running job # check running job
@ -165,15 +144,21 @@ cd /
# running job # running job
if [ "$CALC" = "0" ]; then if [ "$CALC" = "0" ]; then
( CURJOB_PRIOR=$(head -1 "$QUEUEFILE" | awk -F "==" '{print $1}')
CURJOB=$(tail -1 "$QUEUEFILE" | awk -F "==" '{print $2}') CURJOB=$(head -1 "$QUEUEFILE" | awk -F "==" '{print $2}')
[ -z "$CURJOB" ] && break for JOB in $(cat "$QUEUEFILE"); do
sed -i '$d' "$QUEUEFILE" if [[ "$(echo "$JOB" | awk -F "==" '{print $1}')" > "$CURJOB_PRIOR" ]]; then
[ -e "$CURJOB".user ] && CUR_USER="$(cat "$CURJOB".user)" || CUR_USER="$STARTASUSER" CURJOB_PRIOR=$(echo "$JOB" | awk -F "==" '{print $1}')
mv "$CURJOB"* "$JOBDIR/" 2> /dev/null || break CURJOB=$(echo "$JOB" | awk -F "==" '{print $2}')
echo "[II] Running job '$CURJOB'" fi
su -c "/bin/sh "$JOBDIR/$(basename "$CURJOB")" &> "$JOBDIR/$(basename "$CURJOB")".log" $CUR_USER & done
) [ -e "$CURJOB".user ] && CURJOB_USER="$(cat "$CURJOB".user)" || CURJOB_USER="$STARTASUSER"
sed '/'"$(basename "$CURJOB")"'/d' -i "$QUEUEFILE"
if [ -z "$CURJOB" ]; then
echo "[II] You haven't job"
else
mv "$CURJOB"* "$JOBDIR/" && (echo "[II] Running job '$CURJOB' (priority '$CURJOB_PRIOR') as '$CURJOB_USER'"; su -c "/bin/sh "$JOBDIR/$(basename "$CURJOB")" &> "$JOBDIR/$(basename "$CURJOB")".log" $CURJOB_USER ) || echo "[WW] Missing files for job '$CURJOB'"
fi
else else
echo "[II] You have a running job" echo "[II] You have a running job"
fi fi

View File

@ -1,14 +1,14 @@
## Configuration file for queued ## Configuration file for queued
## Paths ## Paths
# path to directory with source jobs # path to directory with source jobs
WORKDIR=/home/arcanis/qdwork #WORKDIR=/var/lib/queued/work
# path to directory with running jobs # path to directory with running jobs
JOBDIR=/home/arcanis/qdjob #JOBDIR=/var/lib/queued/job
# path to file with queue list # path to file with queue list
QUEUEFILE=/home/arcanis/qdlist #QUEUEFILE=/var/lib/queued/queue
## Additional parametrs ## Additional parametrs
# default priority # default priority
PRIORITY=0 #PRIORITY=0
# start as user # start as user
STARTASUSER=arcanis #STARTASUSER=root