Accounting scripts check /usr instead of /var for free space
bugs at cs.psu.edu
bugs at cs.psu.edu
Sat Dec 8 11:52:00 AEST 1990
Serial Number: 018E0352
Machine Type: Sun 4/490
O/S Version: SunOS 4.1
Organization: Computer Science Department, The Pennsylvania State University
333 Whitmore Laboratory, University Park, PA 16802
Phone Number: +1 814 865 9723
Description:
The accounting scripts which check for the amount of free space are
looking at /usr inspite of the fact that the accounting data is in
/var/adm. In particular, the ckpacct script will turn off accounting when
the /usr partition get full even if /var if empty! N.B - These scripts
will fail if /var/adm is mounted on a sepearte partition even after the
included patches are applied.
Repeat-By:
Enable account and fill up the /usr partition. Run ckpacct.
Fix:
Apply the following patches to ckpacct, runacct, and turnacct:
RCS file: RCS/ckpacct,v
retrieving revision 1.1
diff -c -r1.1 ckpacct
*** /tmp/,RCSt1a27469 Mon Dec 3 14:34:30 1990
--- ckpacct Mon Dec 3 14:31:47 1990
***************
*** 7,13 ****
# actual or intended publication of such source code.
#ident "@(#)ckpacct.sh 1.5 89/09/06 SMI" /* from S5R3 acct:ckpacct.sh 1.4 */
! # "periodically check the size of /usr/adm/pacct"
# "if over $1 blocks (500) default, execute turnacct switch"
# "should be run as adm"
--- 7,13 ----
# actual or intended publication of such source code.
#ident "@(#)ckpacct.sh 1.5 89/09/06 SMI" /* from S5R3 acct:ckpacct.sh 1.4 */
! # "periodically check the size of /var/adm/pacct"
# "if over $1 blocks (500) default, execute turnacct switch"
# "should be run as adm"
***************
*** 26,32 ****
ln cklock cklock1
if test $? -ne 0 ; then exit 1; fi
! # If there are less than $_MIN_BLKS free blocks left on the /usr
# file system, turn off the accounting (unless things improve
# the accounting wouldn't run anyway). If something has
# returned the file system space, restart accounting. This
--- 26,32 ----
ln cklock cklock1
if test $? -ne 0 ; then exit 1; fi
! # If there are less than $_MIN_BLKS free blocks left on the /var
# file system, turn off the accounting (unless things improve
# the accounting wouldn't run anyway). If something has
# returned the file system space, restart accounting. This
***************
*** 34,58 ****
# cron at least once per hour.
sync;sync;
! #_blocks=`df /usr | sed "s/.*: *\([0-9][0-9]*\) blocks.*/\1/"`
! _blocks=`df /usr | awk '{print \$4}' | egrep "[0-9]"`
if [ "$_blocks" -lt $_MIN_BLKS -a -f /tmp/acctoff ];then
! echo " ckpacct: /usr still low on space ($_blocks blks);"
echo " acctg still off"
! ( echo " ckpacct: /usr still low on space ($_blocks blks);"
echo " acctg still off" ) | mail root
exit 1
elif [ "$_blocks" -lt $_MIN_BLKS ];then
! echo " ckpacct: /usr too low on space ($_blocks blks);"
echo " turning acctg off"
! ( echo " ckpacct: /usr too low on space ($_blocks blks);"
echo " turning acctg off" ) | mail root
nulladm /tmp/acctoff
turnacct off
exit 1
elif [ -f /tmp/acctoff ];then
! echo " ckpacct: /usr free space restored; turning acctg on" | \
mail root
rm /tmp/acctoff
turnacct on
--- 34,58 ----
# cron at least once per hour.
sync;sync;
! #_blocks=`df /var | sed "s/.*: *\([0-9][0-9]*\) blocks.*/\1/"`
! _blocks=`df /var | awk '{print \$4}' | egrep "[0-9]"`
if [ "$_blocks" -lt $_MIN_BLKS -a -f /tmp/acctoff ];then
! echo " ckpacct: /var still low on space ($_blocks blks);"
echo " acctg still off"
! ( echo " ckpacct: /var still low on space ($_blocks blks);"
echo " acctg still off" ) | mail root
exit 1
elif [ "$_blocks" -lt $_MIN_BLKS ];then
! echo " ckpacct: /var too low on space ($_blocks blks);"
echo " turning acctg off"
! ( echo " ckpacct: /var too low on space ($_blocks blks);"
echo " turning acctg off" ) | mail root
nulladm /tmp/acctoff
turnacct off
exit 1
elif [ -f /tmp/acctoff ];then
! echo " ckpacct: /var free space restored; turning acctg on" | \
mail root
rm /tmp/acctoff
turnacct on
RCS file: RCS/runacct,v
retrieving revision 1.1
diff -c -r1.1 runacct
*** /tmp/,RCSt1a27474 Mon Dec 3 14:34:43 1990
--- runacct Mon Dec 3 14:32:06 1990
***************
*** 37,50 ****
exit 1
fi
! # Check to see if there is enough space in /usr to do nitely accounting
#
! ##_blocks=`df /usr | sed "s/.*: *\([0-9][0-9]*\) blocks.*/\1/"`
! _blocks=`df /usr | awk '{print \$4}' | egrep "[0-9]"`
if [ "$_blocks" -le $_MIN_BLKS ];then
! echo "runacct: Insufficient space in /usr ($_blocks blks); \c"
echo "Terminating procedure"
! ( echo "runacct: Insufficient space in /usr ($_blocks blks); \c"
echo "Terminating procedure" ) | \
tee ${_active} | mail root
logger -p daemon.err "Terminating procedure"
--- 37,50 ----
exit 1
fi
! # Check to see if there is enough space in /var to do nitely accounting
#
! ##_blocks=`df /var | sed "s/.*: *\([0-9][0-9]*\) blocks.*/\1/"`
! _blocks=`df /var | awk '{print \$4}' | egrep "[0-9]"`
if [ "$_blocks" -le $_MIN_BLKS ];then
! echo "runacct: Insufficient space in /var ($_blocks blks); \c"
echo "Terminating procedure"
! ( echo "runacct: Insufficient space in /var ($_blocks blks); \c"
echo "Terminating procedure" ) | \
tee ${_active} | mail root
logger -p daemon.err "Terminating procedure"
***************
*** 388,394 ****
# " should be done manually, or just cleanup first"
! # " FILE USAGE: all files in /usr/adm/ac/nite unless specified"
# " statefile records progess of runacct"
# " lastdate last day runacct ran in date +%m%d format"
--- 388,394 ----
# " should be done manually, or just cleanup first"
! # " FILE USAGE: all files in /var/adm/ac/nite unless specified"
# " statefile records progess of runacct"
# " lastdate last day runacct ran in date +%m%d format"
***************
*** 409,415 ****
# " daycms ascii daily command summary used by prdaily"
# " cms acsii total command summary used by prdaily"
! # " following files in /usr/adm directory"
# " fee output from chargefee program"
# " pacct active pacct file"
--- 409,415 ----
# " daycms ascii daily command summary used by prdaily"
# " cms acsii total command summary used by prdaily"
! # " following files in /var/adm directory"
# " fee output from chargefee program"
# " pacct active pacct file"
***************
*** 417,423 ****
# " Spacctn.MMDD pacct files for MMDD after SETUP state"
# " wtmp active wtmp file"
! # " following files in /usr/adm/acct/sum"
# " loginlog output of lastlogin used in prdaily"
# " tacct total tacct file for current fiscal"
--- 417,423 ----
# " Spacctn.MMDD pacct files for MMDD after SETUP state"
# " wtmp active wtmp file"
! # " following files in /var/adm/acct/sum"
# " loginlog output of lastlogin used in prdaily"
# " tacct total tacct file for current fiscal"
RCS file: RCS/turnacct,v
retrieving revision 1.1
diff -c -r1.1 turnacct
*** /tmp/,RCSt1a27479 Mon Dec 3 14:34:51 1990
--- turnacct Mon Dec 3 14:32:12 1990
***************
*** 11,19 ****
# "turnacct on makes sure it's on"
# "turnacct off turns it off"
# "turnacct switch switches pacct to pacct?, starts fresh one"
! # "/usr/adm/pacct is always the current pacct file"
PATH=/usr/lib/acct:/bin:/usr/bin:/etc
! cd /usr/adm
case "$1" in
on)
if test ! -r pacct
--- 11,19 ----
# "turnacct on makes sure it's on"
# "turnacct off turns it off"
# "turnacct switch switches pacct to pacct?, starts fresh one"
! # "/var/adm/pacct is always the current pacct file"
PATH=/usr/lib/acct:/bin:/usr/bin:/etc
! cd /var/adm
case "$1" in
on)
if test ! -r pacct
More information about the Comp.sys.sun
mailing list