Linux的shell编程前奏之基础技能实战三mysql
一>开发shell脚本判断系统剩余内存的大小,若是低于100MB,就邮件报警给系统管理员,而且将脚本加入系统定时任务,即每三分钟执行一次检查。linux
1>开发脚本2019-02-10monitorMemory.sh:nginx
#!/bin/sh FreeMem=`free -m|awk 'NR==2 {print $NF}'` #获取系统当前的内存值,赋给变量FreeMem CHARS="Current memory is $FreeMem" #定义字符串CHARS变量,做为输出及供邮件正文使用 if [ $FreeMem -lt 100 ] then echo $CHARS|tee /tmp/messages.txt mail -s "`date +%F-%T`$CHARS" 850034044@qq.com </tmp/messages.txt fi
2>把上述开发好的脚本加入到定时任务crond中。添加定时任务:crontab+eweb
#每三分钟执行一次脚本2019-02-10monitorMemory.shsql
*/3 * * * * /bin/sh /home/scripts/2019-02-10/2019-02-10monitorMemory.sh &>/dev/null
3>查看定时任务效果:shell
[root@lll tmp]# cd /tmp;cat CrontabMem.txt Current memory is 2047. Current memory is 2047. Current memory is 2047. Current memory is 2047. Current memory is 2047.
总结:数据库
i>awk中单引号和双引号的效果和通常常规相反。即:单引号中的命令和变量会被解析输出,而双引号中的命令和变量会原样输出。 [root@lll /]# free -m total used free shared buff/cache available Mem: 976 118 674 7 183 690 Swap: 2047 0 2047 [root@lll /]# free -m|awk 'NR==3 {print $NF}' 2047 [root@lll /]# free -m|awk "NR==3 {print $NF}" Swap: 2047 0 2047
ii>linux中定时任务(crontab是定时任务命令,crond是crontab的守护进程):编程
A.crontab基本格式:bash
* * * * * cmdapp
提示:
① cmd为要执行的命令或脚本,例如/bin/sh /server/scripts/lee.sh.
② 每一个段之间必需要有空格。
B.crontab语法格式中时间段的含义表:
段 含义 取值范围
第一段 表明分钟 00-59
第二段 表明小时 00-23
第三段 表明日期 01-31
第四段 表明月份 01-12
第五段 表明星期 0-7(0和7都表明星期日)
C.定时任务格式中:/n
n表明数字,即”每隔n单位时间”,例如:每10分钟执行一次任务能够写 */10 * * * * cmd,其中 */10,*的范围是0-59,也能够写成0-59/10。
D.crontab -l,查看定时任务;
crontab -e,添加定时任务;
iii>
liunx中“&>" 通常一个搜索命令有标准输出和标准错误输出,也就是”>"和“2>" 这两个的结合体就是 ”&>" 结果就是你输入命令,正确和错误信息都不输出在屏幕上直接输到你重定向的一个文件内。
iiii>运维思想:
多种解决问题的思路。
汇报领导交代的任务就是要给领导多种选择,即解决问题的几种方案,两三种最好。
我的以为职场上很重要的三个竞争力就是:学习能力,职业寿命,人际关系。
二>用if条件语句针对Nginx web服务或Mysql数据库服务是否正常进行检测,若是服务未启动,则启动相应的服务。
1>开发mysql数据库监控脚本2019-03-0701.sh
#/bin/sh if [ `netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'` -eq 3306 ] then echo "Mysql is running." else echo "Mysql is stopped." /etc/init.d/mysqld start fi
2>开发mysql数据库监控脚本2019-03-0702.sh
if [ `netstat -lnt|grep 80|awk -F "[ :]+" '{print $5}'` -eq 80 ] then echo "Nginx is running." else echo "Nginx is stopped." cd /application/nginx/sbin;./nginx fi
总结: 1>命令与命令之间能够用;进行连起来使用在命令行执行。