您的位置:时时app平台注册网站 > 时时app平台注册网站 > 7.14

7.14

2019-11-01 11:50

stdio  #出口结果

40 # E_WRONGARGS=65 #非数值参数(错误的参数格式)

1.此处的usage是用法的情趣

65 # }

case 2:当前路线不在/var/log下

60 #更有成效的做法是

2.`basename $0`执行basename命令,$0为当前剧本的名字,因而`basename $0`是突显当前剧本的名字,如自己的脚本名字叫cleanup.sh,那么$(`basename $0)="cleanup.sh"

79

图片 1

32 lines=$LINES #暗许,若是不在命令行中钦命

/var/log/messages的作用:
/var/log/messages文件中贮存的是系统的日志新闻,当内核程序调节和测量试验时,printk语句所发生的消息呈现不出来的时候,就动用cat /var/log/messages文件的法门,查看所打字与印刷出的消息.

34

exit n
n为退出码,退出码的预定
0意味成功(Zero - Success)
非0表示战败(Non-Zero  - Failure)
2意味用法不当(Incorrect Usage)
65象征非数值( data format error )
127表示命令未有找到(Command Not Found)
126象征不是可实行的(Not an executable)
>=128 连续信号发生

28 #测量试验是不是有命令行参数(非空).

sort   #出口结果

3

cleanup:二个抓实和广义的去除logfile的剧本

73

两种艺术:1.自己用sudo尝试,不能够成功,提醒该普通顾客不再sudoers中

52

为非数值系统会提示:Usage:cleanup.sh file-cleanup

74 # cat /dev/null > messages

#反省命令行参数
case "$1" in
"" )
        lines=$LINES
        ;;
*[!0-9]* )
        echo "Usage: `basename $0` file-cleanup"
        exit $E_WRONGARGS
        ;;
* )
        lines=$1
        ;;
esac

57 exit $E_XCD

LOG_DIR=/var/log   
ROOT_UID=0      #当UID为0的时候,顾客技艺有root客商的权柄
LINES=50           #默许的保留行数
E_XCD=66          #不在/var/log目录下,将以error退出
E_NOTROOT=67    #非root客户将以error退出
E_WRONGARGS=65  #非数值的保留行数将以error退出

24 exit $E_NOTROOT

如下图例子中:

12

#检查是否为root客户,非root客商不可能实践此脚本,将以error退出
if [ "$UID" -ne "$ROOT_UID" ]
then
        echo "Must be root to run this script."
        exit $E_NOTROOT
fi

43 # "" ) lines=50;;

case3:检查命令行参数(三种情景:为空、非数值、数值型)

48 #*直到"Loops"的章节才会对上边的内容实行详尽的描述.

#文件消亡完,再次来到两个表示成功的退出码0
echo "Logs cleaned up."
exit 0

11

图片 2

67

#basename include/stdio.h .h

</code>

图片 3

8 #您就能够感觉它从不什么秘密的了.

         2.切换成root客户,把脚本拷贝到/tmp下,再切回普通客商试行,获得的结果和预期相似,系统会唤醒:Must be root to run this script.

36 # Stephane Chazelas提出选取上面

case1:非root用户

42 # case "$1" in

注:在linux中可用man basename查看basename的用法:

56 echo "Can't change to $LOG_DIR."

为basename钦赐八个门道,basename命令会删除全部的前缀(包罗最终五个'/')

81 #退出以前重返0,再次来到0表示成功.

生机勃勃旦未有在其下,系统会唤醒:Can't change to /var/log.

17 E_NOTROOT=67 #非根客商将以error退出

1.有不可能缺乏解释一下那四个文件messages和wtmp

46 # esac

为数值时会依据所给数值保留相应的行数

33 fi

剧本实行结果

15 LINES=50 #暗中认可的保存行数

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

18

#开展到这一步,开头扼杀logfile
tail -$lines messages > mesg.temp       #保存messages文件的末梢有的
mv mesg.temp messages                      #改为新的messages文件
cat /dev/null > wtmp                            #清除wtmp文件

38 # 但对于那章来讲如故微微超前.

倘诺后缀被钦赐为.h, basename命令会将富有前缀以至钦赐的后缀去除掉

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

至于退回码表示的含义

1 #!/bin/bash

#反省当前目录是不是科学,假使不在/var/log的目录下,将退出
if [ "$PWD" != "$LOG_DIR" ]
then
        echo "Can't change to $LOG_DIR."
        exit $E_XCD
fi

7 #时候,

#basename /usr/bin/sort

69

为空时默许保留50行

41 #

2.cat /dev/null > wtmp只是清空wtmp文件的剧情,文件可能存在的./dev/null也正是五个黑洞或废物箱,只要奉行,就不会保留任何文件.还会有黄金时代种艺术是本书提到的 : > wtmp, :和> (重定向操作符)结合使用时,把四个文件截断到0长度,未有更换它的权限.
万一文件在头里并不设有,那么就创建它.

70 tail -$lines messages > mesg.temp #保留log file新闻的最后部分.

图片 4

13 LOG_DIR=/var/log

是因为笔者的shell脚本放在/root/sh下,所以切换来普通客户实施/root/sh/cleanup.sh时.提醒作者权力非常不足

64 # exit $E_XCD;

/var/log/wtmp的作用:
/var/log/wtmp是二个二进制文件,记录每便顾客的报到次数和持续时间等音信
  该日记文件永世记录每一种顾客登陆、注销及系统的开发银行、停机的风浪。因而随着系统健康运作时刻的加码,该文件的朗朗上口也会愈加大,扩展的速度决议于系统客户登陆的次数。该日志文件能够用来查看客商的登陆记录。
查阅方法:
last或last -f /var/log/wtmp   (-f 内定记录文件)

72

正文所选的例证来自于《Advanced Bash-scripting Gudie》意气风发书,译者 白花蛇杨春敏 黄毅

53 if [ `pwd` != "$LOG_DIR" ] #或者if[ "$PWD" != "$LOG_DIR" ]

58 fi #在拍卖log file之前,再确认一回当前目录是还是不是精确.

35

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

59

45 # * ) lines=$1;;

75 #*不再须要了,使用上边包车型大巴点子更安全.

22 then

50

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

16 E_XCD=66 #不可能纠正目录?

14 ROOT_UID=0 # $UID为0的时候,客商技能备根客商的权位

2 #清除,版本3

26

55 then

29 then

cleanup:一个做实的和广义的删除logfile的脚本

54 #不在/var/log中?

9 #

21 if [ "$UID" -ne "$ROOT_UID" ]

51 cd $LOG_DIR

66

76

27 if [ -n "$1" ]

6 #其一本子有多数风味,那些特点是在后边章节进行讲明的,大致是进展到本书的一半的

19

62 # cd /var/log || {

39 #

82 #

47 #

78 echo "Logs cleaned up."

<code>

71 mv mesg.temp messages #化为新的log目录.

23 echo "Must be root to run this script."

80 exit 0

61 #

37 # 的更加好形式来检查测验命令行参数.

44 # *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;

25 fi

63 # echo "Cannot change to necessary directory." >&2

10

5 # -------

31 else

49

20 #理当如此要接纳根客户来运作

30 lines=$1

77 cat /dev/null > wtmp # ': > wtmp'和'> wtmp'具备同等的效应

4 # Warning:

68

本文由时时app平台注册网站发布于时时app平台注册网站,转载请注明出处:7.14

关键词: