X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=autodlctl;h=6bac7514c677696d89169713bfe6cd9e0b37ddf5;hb=9151870a67acce59580d3f92aa629bd75c95766e;hp=496a2c4d9f0f27b86e7a89e8abb7c9c228227626;hpb=6c554f39574e684cfe3c493690c286a95a4e00fc;p=utils.git diff --git a/autodlctl b/autodlctl index 496a2c4..6bac751 100755 --- a/autodlctl +++ b/autodlctl @@ -22,7 +22,7 @@ function getnext fi unset badsizesl if [ -r "$d/.autodl/badsizes" ]; then - badsizesl="$(sed -n "s/^$curep \(.*\)$/\1/p" "$d/.autodl/badsizes")" + badsizesl="$(sed -n "s/^0*$curep \(.*\)$/\1/p" "$d/.autodl/badsizes")" fi if [ -n "$badsizesl" ]; then read -a badsizes <<<"$badsizesl" @@ -38,6 +38,9 @@ function getnext fi infofile="$d/.autodl/rtinfo" args=(-e "$fsexpr" -t "$tag $curep" -I "$infofile") + if [ -e "$d/.autodl/wait" ]; then + args=("${args[@]}" -w) + fi if [ -r "$d/.autodl/uarg" ]; then uarg="`cat "$d/.autodl/uarg"`" elif [ -e "$d/.autodl/autouarg" ]; then @@ -47,7 +50,7 @@ function getnext fuarg="`printf "$uarg" "$curep"`" args=("${args[@]}" -a "$fuarg") fi - outfile="`mktemp /tmp/autodlXXXXXX`" + outfile="$d/.autodl/output" echo "trying to download -- autodl ${args[@]}" intr=n autodl "${args[@]}" >"$outfile" 2>&1 & @@ -59,8 +62,17 @@ function getnext echo "$tag interrupted" else if [ "$stat" -ne 0 ]; then - echo "Failure for $tag" >>"$HOME/dc/autodl/errorlog" - tail -n 20 "$outfile" >>"$HOME/dc/autodl/errorlog" + if [ "$stat" -eq 1 ]; then + echo "Failure for $tag" >>"$HOME/dc/autodl/errorlog" + tail -n 20 "$outfile" >>"$HOME/dc/autodl/errorlog" + elif [ "$stat" -eq 2 ]; then + echo "Connection error on $tag" + elif [ "$stat" -eq 3 ]; then + echo "Configuration error, disabling $tag" + cp "$outfile" "$d/.autodl/conferr" + touch "$d/.autodl/disabled" + echo "$tag" >>"$HOME/dc/autodl/faulty" + fi else echo "episode $curep of $tag done" case "$epfrom" in @@ -152,8 +164,10 @@ while [ "$done" != y ]; do else tag="`basename "$d"`" fi + start=y if [ -e "$d/.autodl/disable" ]; then echo "disabling $tag per user request" + start=n touch "$d/.autodl/disabled" rm -f "$d/.autodl/disable" if [ -r "$HOME/dc/autodl/run/$tag" ]; then @@ -163,17 +177,35 @@ while [ "$done" != y ]; do else echo "could not find pid for $tag" fi - elif [ ! -r "$d/.autodl/sexpr" ]; then - touch "$d/.autodl/disabled" - echo "$tag lacks sexpr" >&2 - echo "$tag" >>"$HOME/dc/autodl/faulty" - else - if [ ! -e "$HOME/dc/autodl/run/$tag" ]; then - if [ $((`date +%s` - $lastget)) -gt 20 ]; then - getnext "$d" "$tag" & - lastget=`date +%s` - pid=$! - echo "$pid" >"$HOME/dc/autodl/run/$tag" + fi + if [ -e "$d/.autodl/restart" ]; then + echo "restarting $tag per user request" + rm -f "$d/.autodl/restart" + if [ -r "$HOME/dc/autodl/run/$tag" ]; then + pid="`cat "$HOME/dc/autodl/run/$tag"`" + echo "sending SIGUSR1 to $pid" + kill -USR1 "$pid" + while [ -e "$HOME/dc/autodl/run/$tag" ]; do + echo "waiting for it to exit" + sleep 1 + done + else + echo "could not find pid for $tag" + fi + fi + if [ $start = y ]; then + if [ ! -r "$d/.autodl/sexpr" ]; then + touch "$d/.autodl/disabled" + echo "$tag lacks sexpr" >&2 + echo "$tag" >>"$HOME/dc/autodl/faulty" + else + if [ ! -e "$HOME/dc/autodl/run/$tag" ]; then + if [ $((`date +%s` - $lastget)) -gt 20 ]; then + getnext "$d" "$tag" & + lastget=`date +%s` + pid=$! + echo "$pid" >"$HOME/dc/autodl/run/$tag" + fi fi fi fi