home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 1 / GoldFishApril1994_CD2.img / d4xx / d473 / cnewssrc / cnews_src.lzh / misc / newsdaily < prev    next >
Text File  |  1990-12-22  |  3KB  |  134 lines

  1. #! /bin/sh
  2. # newsdaily - daily housekeeping chores
  3.  
  4. # =()<. ${NEWSCONFIG-@<NEWSCONFIG>@}>()=
  5. . ${NEWSCONFIG-/usr/lib/news/bin/config}
  6.  
  7. PATH=$NEWSCTL/bin:$NEWSBIN/maint:$NEWSBIN:$NEWSPATH ; export PATH
  8. umask $NEWSUMASK
  9.  
  10. gripes="/tmp/ngrip$$"
  11. tmp="/tmp/ndai$$"
  12. trap "rm -f $gripes $tmp ; exit 0" 0 1 2 15
  13. >$gripes
  14.  
  15. if test $# -gt 0
  16. then
  17.     gurus="$*"
  18. else
  19.     gurus="$NEWSMASTER"
  20. fi
  21.  
  22. cd $NEWSCTL
  23.  
  24. # keep several generations of errlog for problem tracking
  25. rm -f errlog.ooo
  26. mv errlog.oo errlog.ooo
  27. mv errlog.o errlog.oo
  28. mv errlog errlog.o && >errlog
  29.  
  30. # keep one generation of log -- it's big
  31. rm -f log.o
  32. mv log log.o && >log
  33.  
  34. # keep several generations of batchlog for statistics
  35. rm -f batchlog.ooo
  36. mv batchlog.oo batchlog.ooo
  37. mv batchlog.o batchlog.oo
  38. mv batchlog batchlog.o && >batchlog
  39.  
  40. # report any errors
  41. sleep 500            # hope that errlog.o is quiescent after this
  42. if test -s errlog.o
  43. then
  44.     (
  45.         echo "errlog.o"
  46.         echo ---------
  47.         cat errlog.o
  48.         echo ---------
  49.         echo
  50.     ) >>$gripes
  51. fi
  52.  
  53. # look for input anomalies
  54. cd $NEWSARTS/in.coming
  55. find . -type f -mtime +1 -print | sed 's;^\./;;' | egrep -v '^bad/' >$tmp
  56. if test -s $tmp        # old non-bad files lying about
  57. then
  58.     (
  59.         echo 'old input files:'
  60.         ls -ldtr `cat $tmp`
  61.         echo
  62.     ) >>$gripes
  63. fi
  64. find bad -type f -name '[0-9]*' -mtime -2 -print >$tmp    # recent bad batches
  65. if test -s $tmp
  66. then
  67.     (
  68.         echo 'recent bad input batches (perhaps worth investigation):'
  69.         ls -ldtr `cat $tmp`
  70.         echo
  71.     ) >>$gripes
  72. fi
  73. find bad -type f -name '[0-9]*' -mtime +7 -exec rm -f '{}' ';'
  74.  
  75. # look for output anomalies
  76. cd $NEWSARTS/out.going
  77. find . -type f -name 'togo*' -size +0 -mtime +1 -print >$tmp
  78. if test -s $tmp
  79. then
  80.     (
  81.         echo 'batching possibly stalled for sites:'
  82.         sed 's;^\./\([^/]*\)/.*;\1;' $tmp | sort -u
  83.         echo
  84.     ) >>$gripes
  85. fi
  86. cd $NEWSCTL
  87. no=`egrep 'disk too full' batchlog.o | wc -l`
  88. if test " $no" -gt 0
  89. then
  90.     (
  91.         echo "space shortage(s) limited batching $no times"
  92.         echo
  93.     ) >>$gripes
  94. fi
  95.  
  96. # look for problem newsgroups on input (can miss cross-posted articles)
  97. cd $NEWSCTL
  98. egrep '`' log.o | egrep junked | sed 's/.*`\(.*\)'"'"'.*/\1/' | sort |
  99.     uniq -c | sort -nr | sed 5q >$tmp
  100. if test -s $tmp
  101. then
  102.     (
  103.         echo 'leading five unknown newsgroups by number of articles:'
  104.         cat $tmp
  105.         echo
  106.     ) >>$gripes
  107. fi
  108. egrep '`' log.o | egrep unapproved | sed 's/.*`\(.*\)'"'"'.*/\1/' | sort |
  109.     uniq -c | sort -nr | sed 5q >$tmp
  110. if test -s $tmp
  111. then
  112.     (
  113.         echo 'top five supposedly-moderated groups with unmoderated postings:'
  114.         cat $tmp
  115.         echo
  116.     ) >>$gripes
  117. fi
  118. egrep '`' log.o | egrep 'no subscribed' | sed 's/.*`\(.*\)'"'"'.*/\1/' | sort |
  119.     uniq -c | sort -nr | sed 5q >$tmp
  120. if test -s $tmp
  121. then
  122.     (
  123.         echo 'leading five unsubscribed newsgroups:'
  124.         cat $tmp
  125.         echo
  126.     ) >>$gripes
  127. fi
  128.  
  129. # and send it
  130. if test -s $gripes
  131. then
  132.     mail $gurus <$gripes
  133. fi
  134.