mirror of https://github.com/tLDP/LDP
74 lines
1.7 KiB
Bash
74 lines
1.7 KiB
Bash
#!/bin/bash
|
|
# cleanup, version 2
|
|
# Run as root, of course.
|
|
|
|
LOG_DIR=/var/log
|
|
ROOT_UID=0 # Only users with $UID 0 have root privileges.
|
|
LINES=50 # Default number of lines saved.
|
|
E_XCD=66 # Can't change directory?
|
|
E_NOTROOT=67 # Non-root exit error.
|
|
|
|
|
|
if [ "$UID" -ne "$ROOT_UID" ]
|
|
then
|
|
echo "Must be root to run this script."
|
|
exit $E_NOTROOT
|
|
fi
|
|
|
|
if [ -n "$1" ]
|
|
# Test if command line argument present (non-empty).
|
|
then
|
|
lines=$1
|
|
else
|
|
lines=$LINES # Default, if not specified on command line.
|
|
fi
|
|
|
|
|
|
# Stephane Chazelas suggests the following,
|
|
#+ as a better way of checking command line arguments,
|
|
#+ but this is still a bit advanced for this stage of the tutorial.
|
|
#
|
|
# E_WRONGARGS=65 # Non-numerical argument (bad arg format)
|
|
#
|
|
# case "$1" in
|
|
# "" ) lines=50;;
|
|
# *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;
|
|
# * ) lines=$1;;
|
|
# esac
|
|
#
|
|
#* Skip ahead to "Loops" chapter to decipher all this.
|
|
|
|
|
|
cd $LOG_DIR
|
|
|
|
if [ `pwd` != "$LOG_DIR" ] # or if [ "$PWD" != "$LOG_DIR" ]
|
|
# Not in /var/log?
|
|
then
|
|
echo "Can't change to $LOG_DIR."
|
|
exit $E_XCD
|
|
fi # Doublecheck if in right directory, before messing with log file.
|
|
|
|
# far more efficient is:
|
|
#
|
|
# cd /var/log || {
|
|
# echo "Cannot change to necessary directory." >&2
|
|
# exit $E_XCD;
|
|
# }
|
|
|
|
|
|
|
|
|
|
tail -$lines messages > mesg.temp # Saves last section of message log file.
|
|
mv mesg.temp messages # Becomes new log directory.
|
|
|
|
|
|
# cat /dev/null > messages
|
|
#* No longer needed, as the above method is safer.
|
|
|
|
cat /dev/null > wtmp # ': > wtmp' and '> wtmp' have the same effect.
|
|
echo "Logs cleaned up."
|
|
|
|
exit 0
|
|
# A zero return value from the script upon exit
|
|
#+ indicates success to the shell.
|