home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / cmds / root.3 / usr / lib / acct / ckpacct / ckpacct~
Text File  |  1998-08-19  |  3KB  |  95 lines

  1. #!/sbin/sh
  2.  
  3. # Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  4. #                                                                         
  5. #        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  6. #                   SANTA CRUZ OPERATION INC.                             
  7. #                                                                         
  8. #   The copyright notice above does not evidence any actual or intended   
  9. #   publication of such source code.                                      
  10.  
  11. #    copyright    "%c%"
  12.  
  13. #!/sbin/sh
  14.  
  15.  
  16. #ident    "@(#)acct:common/cmd/acct/ckpacct.sh    1.9.3.5"
  17. #ident "$Header: $"
  18. #       periodically check the size of /var/adm/pacct
  19. #       if over $1 blocks (default: maxi 200, mini 500), execute 
  20. #    turnacct switch
  21.  
  22. PATH=/usr/lib/acct:/usr/bin:/usr/sbin
  23. trap "rm -f /var/adm/cklock*; exit 0" 0 1 2 3 9 15
  24. export PATH
  25.  
  26. if [ -f uts -a uts ]
  27. then
  28.     _max=${1-200}
  29. else
  30.     _max=${1-500}
  31. fi
  32. _MIN_BLKS=500
  33. cd /var/adm
  34.  
  35. #    set up lock files to prevent simultaneous checking
  36.  
  37. cp /dev/null cklock
  38. chmod 400 cklock
  39. ln cklock cklock1 > /dev/null 2>&1
  40. if test $? -ne 0 ; then exit 1; fi
  41.  
  42. #    check to see if accounting enabled.  If "accton pacct"
  43. #    exits 1, then accounting was enabled.
  44.  
  45. if [ ! -r pacct ]
  46. then
  47.     echo "" > pacct        #    pacct file is created
  48. fi
  49.  
  50. accton pacct 2> /dev/null    #    don't print potential error msg
  51.                  #    to stderr
  52. ACCTSTAT=$?
  53. if test ${ACCTSTAT} -eq 0
  54. then         
  55.      accton  #    accting was disabled. Disable it again
  56. fi
  57.  
  58. #    If there are less than $_MIN_BLKS free blocks left on the /var
  59. #    file system, turn off the accounting (unless things improve
  60. #    the accounting wouldn't run anyway).  If something has
  61. #    returned the file system space, restart accounting.  This
  62. #    feature relies on the fact that ckpacct is kicked off by the
  63. #    cron at least once per hour.
  64.  
  65. _blocks=`df /var | sed "s/.*:  *\([0-9][0-9]*\) blocks.*/\1/"`
  66.  
  67. if [ "$_blocks" -lt $_MIN_BLKS   -a  -f /tmp/acctoff ];then
  68.     echo "ckpacct: /var still low on space ($_blocks blks); \c"
  69.     echo "acctg still off"
  70.     ( echo "ckpacct: /var still low on space ($_blocks blks); \c"
  71.     echo "acctg still off" ) | mail root adm
  72.     exit 1
  73. elif [ "$_blocks" -lt $_MIN_BLKS ];then
  74.     if test ${ACCTSTAT} -ne 0; then
  75.         echo "ckpacct: /var too low on space ($_blocks blks); \c"
  76.         echo "turning acctg off"
  77.         ( echo "ckpacct: /var too low on space ($_blocks blks); \c"
  78.         echo "turning acctg off" ) | mail root adm
  79.         nulladm /tmp/acctoff
  80.         turnacct off
  81.         exit 1
  82.     fi
  83. elif [ -f /tmp/acctoff ];then
  84.     echo "ckpacct: /var free space restored; turning acctg on"
  85.     echo "ckpacct: /var free space restored; turning acctg on" | \
  86.         mail root adm
  87.     rm /tmp/acctoff
  88.     turnacct on
  89. fi
  90.  
  91. _cursize="`du -s pacct | sed 's/    .*//'`"
  92. if [ "${_max}" -lt "${_cursize}" ]; then
  93.     turnacct switch
  94. fi
  95.