Logiakin tuppaa joskus kertymään. /var/log kansiossa niitä löytyy, ajaa vaikka du -h /var/ | grep log niin näkee tuon logikansion viemän tilan. Jos logia kertyy epätavallisen paljon (sitä voi siis olla gigatavu luokkaa) niin jossain on pientä vikaa, joka mahdollisesti kannattaa korjata.
Onko olemassa komentoa, joka yleisesti tyhjentäisi järjestelmälokit?
Ainakin on olemassa scripti, jolla voi tyhjentää logit. Nimesin sen: login_tyhjennys_scripti.sh. Voi ajaa vain superuserina:
#!/bin/bash
# Cleanup, version 3
#
# Warning:
# -------
# This script uses quite a number of features that will be explained
#+ later on.
# By the time you've finished the first half of the book,
#+ there should be nothing mysterious about it.
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.
# Run as root, of course.
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Must be root to run this script."
exit $E_NOTROOT
fi
if [ -n "$1" ]
# 28 # Test if command line argument present (non-empty).
then
lines=$1
else
lines=$LINES # Default, if not specified on command line.
fi
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.