7.14

2017-07-14  本文已影响7人  三年两度

<code>

cleanup:一个增强的和广义的删除logfile的脚本

################################Start

Script#######################################

1 #!/bin/bash

2 #清除,版本3

3

4 # Warning:

5 # -------

6 #这个脚本有好多特征,这些特征是在后边章节进行解释的,大概是进行到本书的一半的

7 #时候,

8 #你就会觉得它没有什么神秘的了.

9 #

10

11

12

13 LOG_DIR=/var/log

14 ROOT_UID=0 # $UID为0的时候,用户才具有根用户的权限

15 LINES=50 #默认的保存行数

16 E_XCD=66 #不能修改目录?

17 E_NOTROOT=67 #非根用户将以error退出

18

19

20 #当然要使用根用户来运行

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,返回0表示成功.

82 #

################################End

</code>

上一篇 下一篇

猜你喜欢

热点阅读