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学习笔记——日志脚本的主要内容,如果未能解决你的问题,请参考以下文章