Linux学习笔记——日志脚本

Posted Johnny*

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记——日志脚本相关的知识,希望对你有一定的参考价值。

日志

常见的日志一般存放在 /var/log 中

日志可以分为

  • 系统日志:系统日志主要是存放系统内置程序或系统内核之类的日志信息如 alternatives.log 、btmp 。
  • 应用日志:应用日志主要是我们装的第三方应用所产生的日志如 tomcat7 、apache2 等等

可以使用more、less来查看日志内容。

有两个比较特殊的日志wtmp、lastlog,因为这两个日志并不是 ASCII 文件而是被编码成了二进制文件。是使用 last 与 lastlog 工具来提取其中的信息

Bash

Bash( GNU Bourne-Again Shell)是一个为 GNU计划编写的Unix shell

shell是一个命令解释器,通过将系统调用、公共程序、工具和编译过的二进制程序整合在一起来建立引用。

脚本文件

hello.sh文件

#!/bin/bash
# This is a comment
echo Hello World

第一行的 #! 说明文件的类型,Linux根据 #! 及该字符串后面的信息确定该文件的类型。表名这是一个BASH程序,需要由 /bin目录下的bash程序来解释执行
第二行的# This is a comment 是BASH程序的整行注释,从# 之后(#之后是!的除外)开始到行尾都被看做是程序的注释部分
BASH 中的绝大多数语句结尾处都没有分号。

运行脚本的方式


# 使用shell来执行
sh hello.sh

# 使用.来执行
./hello.sh

# 使用source来执行
source hello.sh


小练习

步骤一

新建一个 test.sh 输出 Hello Shiyanlou!

#!/bin/bash
echo "Hello Shiyanlou!"

步骤二

复制 test.sh 为 test2.sh

修改 test2.sh 实现将 Hello Shiyanlou 保存为 my.txt 文本

#!/bin/bash
echo "Hello Shiyanlou!" > my.txt

步骤三

新建一个 cleantest.sh 脚本运行实现清空 test.sh 里的内容

#!/bin/bash
cat /dev/null > test.sh


变量

定义变量

如果 variable 是一个变量的名字,那么 $variable 就是引用这个变量的值,即这变量所包含的数据。定义变量时,变量名不加美元符号,在引用变量是才使用美元符。
在这里插入图片描述

【注意】
变量名和等号之间不能有空格。同时,变量名的命名须遵循如下规则:

首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用 bash 里的关键字(可用 help 命令查看保留关键字)

除了直接赋值之外,还可以用语句给变量赋值,如:

在这里插入图片描述

bash中没有直接的加减法,需要通过以下方式进行:

使用变量

加花括号帮助解释器识别变量的边界,若不加,解释器会把 mynameGood 当成一个变量(值为空)。
在这里插入图片描述

只读变量

在这里插入图片描述

特殊变量

局部变量

这种变量只在代码块或者函数中才可见。

位置参数

从命令行传递到脚本的参数: $0,$1,$2,$3……

 $0 就是脚本文件自身名字
 $1 是第一个参数
 $2 是第二个参数
 $3 是第三个参数
 $9之后的位置参数就必须使用大括号括起来了,${10}${11}${12}

$#: 传递到脚本的参数个数
$*: 以一个单字符显示所有向脚本传递的参数。与位置变量不同,此选项参数可以超过9个
$$: 脚本运行的当前进程ID号
$?: 显示最后命令退出状态,0表示没有错误,其他任何职表名有错误。

 

在这里插入图片描述


1,代表文件类型,一般有三类,- 代表普通的二进制文件,l 代表符号链接文件(软链接),d 代表目录文件
2-4,代表文件所有者的权限表示情况,分别对应 可读(r) 可写(w) 可执行(w)- 代表没有该项权限
5-7,代表文件所有这所属组的权限表示情况。分别对应 可读(r) 可写(w) 可执行(w)- 代表没有该项权限
8-10,代表除文件所有者和所属组的其他人所拥有的权限表示情况。分别对应 可读(r) 可写(w) 可执行(w)- 代表没有该项权限 

1 3 3 3 分别对应  类型  (根)用户权限  组内用户权限  其他用户权限
        权限类型  读 写 可执行。调整权限的方法使得对应位置置1即可。

算数运算符

在这里插入图片描述
在这里插入图片描述
【注意】

原生的bash不支持简单的数学运算,但是可以通过其他命令来实现,例如awk和expr。
expr是一款表达式计算工具,使用它能完成表达式的求职操作。
注意使用反引号。
表达式和运算符之间要有空格 ,比如 $a + $b 不能写成 a + a+ a+b
表达式要放在方括号之间,并且要有空格,[ $a == b ] 不 能 写 成 [ b ]不能写成[ b][a == $b]
乘号(*)前边必须要加反斜杠,才能实现乘法运算。

在这里插入图片描述

使用了 Bash let 命令,它用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量

流程控制

条件控制语句

if else

sh 的流程控制不可为空。在 sh/bash中,如果 else 分支没有语句执行,就不要写这个 else。

编辑testif.sh文件,写入:
在这里插入图片描述
在这里插入图片描述

#!/bin/bash

echo "please input a"

read a

echo "please input b"

read b

if [ $a == $b ]
then
   echo "a == b"
elif [ $a -gt $b ]
then
   echo "a > b"
elif [ $a -lt $b ]
then
   echo "a < b"
else
   echo "Ineligible"
fi

for循环

在这里插入图片描述

#!/bin/bash
for str in This is a string
do
    echo $str
done

计算1到200之间所有偶数的和

在这里插入图片描述

以上是关于Linux学习笔记——日志脚本的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习总结(76)—— Shell 脚本日志技巧

Linux学习总结(76)—— Shell 脚本日志技巧

JSP学习笔记:JSP语法和指令

linux学习笔记--工程师技术:shell脚本基础

Linux学习笔记-Shell教程

学习笔记:python3,代码片段(2017)