增强的和广义的删除 logfile 的脚本

一般脚本实现删除logfile的方法是

cat /dev/null > messages
cat /dev/null > wtmp # ': > wtmp' 和 '> wtmp'具有相同的作用
echo "Logs cleaned up."
exit 0

用下面的代码段,记录了每一种错误的返回码,没有把代码写死,这样在出错的时候更容易发现问题的所在,同时,以后重用代码段也更容易。

#!/bin/bash
LOG_DIR=/var/log
ROOT_UID=0	#$UID为0时,用户才具有根用户权限
LINES=50	#默认的保存行数
E_XCD=66	#不能修改目录
E_NOTROOT=67	#非根用户将以error退出
if [ "$UID" -ne "$ROOT_UID" ]
#如果UID不为0
then
	echo "Must be root to run this script"
	#必须是root用户才能运行这段代码
	exit $E_NOTROOT
fi

if [ -n "$1" ]
#测试是否有命令行参数(非空)
then
	lines=$1
else
	lines=$LINES
fi	
cd $LOG_DIR
if [ `pwd` != "$LOG_DIR" ]
#测试是否切换到指定目录,没有的话返回错误参数
then
	echo "Can't change to $LOG_DIR."
	exit $E_XCD
fi

tail -$lines messages > mesg.temp
mv mesg.temp mesages
#保存 log file 消息的最后部分,变为新的log目录
echo "Logs cleaned up."
exit 0
#退出前返回0,返回0表示成功

增强的和广义的删除 logfile 的脚本
同时可以切换至普通用户尝试出错并查看返回参数码。