Linux的shell编程前奏之基础技能实战三-java

Windows Windows 2个月前 (08-15) 4次浏览 未收录 0个评论 扫描二维码

Linux的shell编程前奏之基础技能实战三

一>开发shell脚本判断系统剩余内存的大小,如果低于100MB,就邮件报警给系统管理员,并且将脚本加入系统定时任务,即每三分钟执行一次检查。

1>开发脚本2019-02-10monitorMemory.sh:

#!/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+e

#每三分钟执行一次脚本2019-02-10monitorMemory.sh

*/3?*?*?*?*?/bin/sh?/home/scripts/2019-02-10/2019-02-10monitorMemory.sh?&>/dev/null

3>查看定时任务效果:

[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基本格式:

* * * * * cmd

提示:

① 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>命令与命令之间可以用;进行连起来使用在命令行执行。

喜欢 (0)
[]
分享 (0)
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址