ABS脚本分析(1):清除系统日志

ABS脚本分析(1):清除系统日志

说明

    /var/log目录中存储着messages和wtmp日志文件,在日常的工作中,也许需要清楚这两个日志,下面这个脚本将实现日志的清除工作。

abs脚本

#!/bin/bash

LOG_DIR=/var/log
ROOT_UID=0 # $UID为0的时候,用户才具有root用户的权限
LINES=50 # 默认的保存行数
E_XCD=66 # 不能修改目录?
E_NOTROOT=67 # 非root用户将以error退出


# 当然要使用root用户来运行.
if [ "$UID" -ne "$ROOT_UID" ]
then
echo "Must be root to run this script."
exit $E_NOTROOT
fi

if [ -n "$1" ]
# 测试是否有命令行参数(非空).
then
lines=$1
else
lines=$LINES # 默认,如果不在命令行中指定.
fi

E_WRONGARGS=65 # 非数值参数(错误的参数格式)
case "$1" in
"" ) lines=50;;
*[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;
* ) lines=$1;;
esac


cd /var/log || {
echo "Cannot change to necessary directory." >&2
exit $E_XCD;
}


tail -$lines messages > mesg.temp # 保存log file消息的最后部分.
mv mesg.temp messages # 变为新的log目录.


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

exit 0
# 退出之前返回0,
# 返回0表示成功

脚本输入输出

    输入:保存log文件信息的长度,如果不输入,则默认为保存日志文件最后五十行;
    输出:返回0表示成功,返回66表示“不能修改目录”,返回67表示“非root用户”

脚本要素

    该脚本虽然较为短小,不过还是有不少可以借鉴的地方:
    1. bash Test符号;
    2. 使用关系操作符,替换if [] 操作符;
    3. 定义了输入输出,输出能够反映错误类型;
    4. 使用tail命令截取文件。






来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/615703/viewspace-611262/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/615703/viewspace-611262/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值