Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1710246
  • 博文数量: 362
  • 博客积分: 10587
  • 博客等级: 上将
  • 技术积分: 4098
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-10 18:15
文章分类

全部博文(362)

文章存档

2014年(1)

2013年(58)

2011年(115)

2010年(112)

2009年(76)

分类:

2009-10-29 10:44:29

1 #!/bin/bash
2 # 清除, 版本 3

4 #  警告:
5 #  -----
6 #  这个脚本有好多特征,
7 #+ 这些特征是在后边章节进行解释的.
8 #  大概是进行到本书的一半的时候,
9 #+ 你就会觉得它没有什么神秘的了.
10 
11 
12 
13 LOG_DIR=/var/log
14 ROOT_UID=0     # $UID为0的时候,用户才具有root用户的权限
15 LINES=50       # 默认的保存行数
16 E_XCD=66       # 不能修改目录?
17 E_NOTROOT=67   # 非root用户将以error退出
18 
19 
20 # 当然要使用root用户来运行.
21 if [ "$UID" -ne "$ROOT_UID" ]
22 then
23   echo "Must be root to run this script."
24   exit $E_NOTROOT
25 fi 
26 
27 if [ -n "$1" ]
28 # 测试是否有命令行参数(非空).
29 then
30   lines=$1
31 else 
32   lines=$LINES # 默认,如果不在命令行中指定.
33 fi 
34 
35 
36 #  Stephane Chazelas 建议使用下边
37 #+ 的更好方法来检测命令行参数.
38 #+ 但对于这章来说还是有点超前.
39 #
40 #    E_WRONGARGS=65  # 非数值参数(错误的参数格式)
41 #
42 #    case "$1" in
43 #    ""      ) lines=50;;
44 #    *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;
45 #    *       ) lines=$1;;
46 #    esac
47 #
48 #* 直到"Loops"的章节才会对上边的内容进行详细的描述.
49 
50 
51 cd $LOG_DIR
52 
53 if [ `pwd` != "$LOG_DIR" ]  # 或者 if[ "$PWD" != "$LOG_DIR" ]
54                             # 不在 /var/log中?
55 then
56   echo "Can't change to $LOG_DIR."
57   exit $E_XCD
58 fi  # 在处理log file之前,再确认一遍当前目录是否正确.
59 
60 # 更有效率的做法是:
61 #
62 # cd /var/log || {
63 #   echo "Cannot change to necessary directory." >&2
64 #   exit $E_XCD;
65 # }
66 
67 
68 
69 
70 tail -$lines messages > mesg.temp # 保存log file消息的最后部分.
71 mv mesg.temp messages             # 变为新的log目录.
72 
73 
74 # cat /dev/null > messages
75 #* 不再需要了,使用上边的方法更安全.
76 
77 cat /dev/null > wtmp  #  ': > wtmp' 和 '> wtmp'具有相同的作用
78 echo "Logs cleaned up."
79 
80 exit 0
81 #  退出之前返回0,
82 #+ 返回0表示成功.

阅读(591) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~