认识脚本
是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。脚本语言又被称为扩建的语言, 或者动态语言, 是一种编程语言, 用来控制软件应用程序, 脚本通常是以文本 (ASCⅡ) 保存, 只是在被调用时进行解释或者编译。
学习shell脚本的用途
对于一个合格的系统管理员来说,学习和掌握Shell编程是非常重要的。可以在很大程度上简化日常的维护工作,使得管理员从简单的重复劳动中解脱出来。
shell特点
1.shell是一个解释性语言(Python也是),不需要编译等过程,它是从脚本程序中一行一行的读取并执行命令;相对于其他语言来说较为简单。
2. shell是什么 shell(壳),又称之为命令解释器,是一种脚本语言,作用是当用户输入命令时,shell会将命令解析传递给内核,通过内核执行相应的动作。
学习shell知识储备:
- 熟练使用vim编译器
- 熟悉Linux的相关命令和一些基础的服务
- 熟悉三个工具,grep,sed,awk
脚本的命名规则
- 其命名规则和标识符的定义相似
- 一般使用驼峰法命名,第一个单词以小写字母开始;从第二个单词开始以后的每个单词的首字母都采用大写字母,例如:myFirstName、myLastName,国内喜欢用下划线,例如name_file等
shell脚本的基本构成
1.新建一个脚本文件,文件的首行一般为制定shell解释器#!/bin/bash
2.可以写一些合适的注释,在访问脚本时,快速理解执行语句的意思
3.一般约定成俗的在命名脚本文件时为filename.sh
4.可执行语句:即实现程序的功能
5.脚本内注释:-用#实现单行的注释;-用<<BLOCK …注释,BLOCK 实现的是块注释,一次性注释多行
shell脚本的执行:
- 切换到shell脚本所在的目录执行shell脚本
- 使用绝对路径的方式去执行bash shell脚本
- 直接使用bash 或sh 来执行bash shell脚本
- 在当前的shell环境中执行bash shell脚本:source或".“
执行方法之间的区别
- 方法一和方法二脚本需要执行权限,./script_name.sh或/path/script_name.sh
- 方法三:可以在脚本中不指定解释器,脚本可以没有执行权限
- 方法四:当前shell执行,方法1-3开启子shell。
除此外脚本语言还分包括:Scala、JavaScript,VBScript,ActionScript,MAX Script,ASP,JSP,PHP,SQL,Perl,Shell,Python,Ruby等。
下面我们做一个脚本来看一下:
#!/bin/bash # 获取要监控的本地服务器IP地址 IP=`ifconfig | grep inet | grep -vE 'inet6|127.0.0.1' | awk '{print $2}'` echo "IP地址:"$IP # 获取cpu总核数 cpu_num=`grep -c "model name" /proc/cpuinfo` echo "cpu总核数:"$cpu_num cpu_user=`top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%"` echo "用户空间占用CPU百分比:"$cpu_user # 获取内核空间占用CPU百分比 cpu_system=`top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%"` echo "内核空间占用CPU百分比:"$cpu_system # 获取空闲CPU百分比 cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' | cut -f 1 -d "%"` echo "空闲CPU百分比:"$cpu_idle #获取内存信息 # 获取物理内存总量 mem_total=`free | grep Mem | awk '{print $2}'` echo "物理内存总量:"$mem_total # 获取操作系统已使用内存总量 mem_sys_used=`free | grep Mem | awk '{print $3}'` echo "已使用内存总量(操作系统):"$mem_sys_used # 获取操作系统未使用内存总量 mem_sys_free=`free | grep Mem | awk '{print $4}'` echo "剩余内存总量(操作系统):"$mem_sys_free # 获取应用程序已使用的内存总量 mem_user_used=`free | sed -n 3p | awk '{print $3}'` echo "已使用内存总量(应用程序):"$mem_user_used # 获取应用程序未使用内存总量 mem_user_free=`free | sed -n 3p | awk '{print $4}'` echo "剩余内存总量(应用程序):"$mem_user_free # 获取交换分区总大小 mem_swap_total=`free | grep Swap | awk '{print $2}'` echo "交换分区总大小:"$mem_swap_total # 获取已使用交换分区大小 mem_swap_used=`free | grep Swap | awk '{print $3}'` echo "已使用交换分区大小:"$mem_swap_used # 获取剩余交换分区大小 mem_swap_free=`free | grep Swap | awk '{print $4}'` echo "剩余交换分区大小:"$mem_swap_free
保存然后我们执行一下
如果提示没有权限记得chmod修改下权限,需要x执行权限。
这样我们一个简单的小脚本就完成了
比如还可以用shell写一个
#!/bin/bash echo "Hello World !"
执行后会提示 Hello World !