俗话说的好,不会Shell脚本的开发不是一个好运维,我就是那个一直无法成为好运维的开发。进入新的公司后发现职责的划分不会像上一个公司这么细,分配的功能点从前端到后台再到脚本几乎都是自己独立完成,作为一个只会java的菜鸟明显感觉到了力不从心。所以,为了能够不拖社会主义的后腿,先从最基本的脚本开始学习,完成简单的监控任务释放一直在为我操劳的开发同事们。
自己学习Shell是因为所负责的项目需要进行监控,根据公司现有的监控脚本从实际使用的角度出发开始学习里面用到的知识。
Shell的使用主要包括三方面:
Shell脚本编写
此处会涉及到Shell的不同命令
Shell的验证
单独测试不同的Shell命令行、Shell脚本等是否正确
Shell的部署和启动
根据不同的需求,比如按天、小时、分钟等定时执行指定的脚本
下面就从我自己学习的这三个步骤进行说明,希望能帮到和我一样刚开始接触脚本的小伙伴们,如有不正确的地方希望大家进行点评
一、Shell脚本编写说明
为了方便直接使用,我从自己接触的最简单的实例开始
主机磁盘使用率监控
本实例的主要功能是,监控emall_web文件的磁盘空间使用率,若大于设置的默认值则发出告警。对实例的注释如下:
tomcat监控并重启
本实例与上一个类似,用于监控tomcat进程,并且在发现tomcat进程不存在时重新启动
sh /emall_web/tomcat/bin/startup.sh 即为tomcat的重启命令,sh表示执行后面的语句,/emall_web/tomcat/bin/startup.sh为用户tomcat的启动命令涉及到的命令说明
1)df df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。 语法:df(选项)(参数) 选项 -a或--all:包含全部的文件系统; --block-size=<区块大小>:以指定的区块大小来显示区块数目; -h或--human-readable:以可读性较高的方式来显示信息; -H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes; -i或--inodes:显示inode的信息; -k或--kilobytes:指定区块大小为1024字节; -l或--local:仅显示本地端的文件系统; -m或--megabytes:指定区块大小为1048576字节; --no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值; -P或--portability:使用POSIX的输出格式; --sync:在取得磁盘使用信息前,先执行sync指令; -t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息; -T或--print-type:显示文件系统的类型; -x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息; --help:显示帮助 --version:显示版本信息。 参数 文件:指定文件系统上的文件。 2)ps ps命令用来列出系统中当前运行的那些进程,ps为我们提供了进程的一次性的查看 命令格式: ps [参数] 参数 a 显示所有进程 -a 显示统一终端下的所有程序 -A 显示所有进程 c 显示进程的真实名称 -N 反向选择 -e 等于”-A” e 显示环境变量 f 显示程序间的关系 -H 显示树状结构 r 显示当前中断的进程 T 显示当前终端的所有进程 u 指定用户的所有进程 -au 显示较详细的资讯 -aux 显示所有包含其他使用者的进程 -C<命令> 列出指定命令的状态 --lines<行数> 每页显示的行数 --width<字符数> 每页显示的字符数 --help 显示帮助信息 --version 显示版本信息 3)grep 显示匹配一个或多个模式的文本行,时常会作为管道后的第一步,以便对匹配上的数据做进一步处理。 此命令比较常用,使用场景较多,用户可自行查找更加详细的资料 4)head/tail head/tail用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而tail是看档案的结尾 5)awk AWK读取输入文件一次一行 6)wc 统计文件里面有多少单词,多少行,多少字符。 wc语法 wc [-lwm] 选项与参数: -l :仅列出行; -w :仅列出多少字(英文单字); -m :多少字符; 7)if if .... then .... elif .... then.... else.... fi 8)sh 执行后面的语句
二、Shell的验证
- 单个命令的验证
整个Shell文件的验证
1)进入Shell脚本所在的路径下
2)运行Shell脚本
运行磁盘使用率check_DF.sh脚本
运行tomcat脚本checkProcess.sh
若tomcat已经启动
若tomcat未启动
遇到的问题说明
1)权限问题
若账号不支持对tomcat的启动,则会出现无法运行错误
2)找不到文件问题
若引入的文件路径或名称不匹配,则会出现无法找到文件错误
三、Shell的部署和启动
Shell脚本部署
打开自己要存放Shell脚本的目标,直接上传Shell脚本,引入的脚本文件等,确保相对路径正确
脚本文件的定时启动
1)编写定时脚本,命名为crontab.txt
2)启动定时任务
a.先查看当前用户的定时任务
在任意目录下执行 crontab -l
显示账户所有的定时任务
b.执行脚本定时crontab.txt文件
进入crontab.txt目录
执行crontab crontab.txt
执行完成后再查看一次当前用户的定时任务确定已启动
3)测试定时任务的执行是否成功
停止tomcat的运行,等待半个小时后查看tomcat是否正常运行
ps -ef | grep tomcat
以上就是最简单的Shell脚本的整个学习和使用过程,如果有其它更加复杂的监控可在些基本上进行修改。