概述

读书百遍其义自见,shell脚本也是,只要例子看得多了,自然就知道怎么写了。这里主要整理了20几个例子,因为内容比较多,所以分了几次来做介绍了。下面的实例最好先自己思考怎么去实现,然后再看下实现的方式,答案不是标准的,也存在一些可以继续完善的地方。


1、文件以日期命名,并写入磁盘使用情况

#!/bin/bash ##################################################文件以日期命名,并写入磁盘使用情况#################################################d=`date +%Y-%m-%d` ##获取日期logfile=$d.log ##定义日志文件名df -h > $logfile ##向文件写入磁盘使用情况

2、统计日志文件中各个IP的访问量

1)、新建日志文件 ,文件名 1.txt

123 -sdfjukhesdjkfghjkldf 456 -jsdigkhndjfgjd 789 -dsfjkdhfjkhsdjkfhsjk 123 -sdfhfjkhsjklaj 789 -jfgduhdjkfghjkdf 123 -dhsfgjkhsdjkghjkdf

2)脚本2.sh

#!/bin/bash###################################################取文件IP|排序|去重并统计各个IP重复数量|排序#################################################awk '{print $1}' 1.txt |sort -n |uniq -c |sort -n

3.计算Linux系统所有进程占用内存之和

#!/bin/bash##################################################计算Linux系统所有进程占用内存之和#################################################sum=0#利用for循环调取每一项进程所使用的内存,并依次求和for mem in `ps aux |awk '{print $6}' |grep -v 'RSS'`do sum=$[$sum+$mem] ##内存求和doneecho "the usered mem $sum" ##输出结果

4.监控远程机器的存活,发现宕机示警

#!/bin/bash##################################################监控远程机器的存活,发现宕机示警##################################################假设远程机器IP为114.114.114.114ip=114.114.114.114d=`date +%Y-%m-%d` ##获取日期#while循环做循环监控,"while :"为死循环while :do#使用ping命令,取丢包率的数值作为存活的判断依据n=`ping -c2 $ip 2> /dev/null |grep 'received' |awk -F 'received, |%' '{print $2}'`n1=`echo $n |sed 's/[0-9]//g'`#判断取值是否为空 if [ -z "$n" ] then echo "error" exit#判断取值是否为数字 elif [ -n "$n1" ] then echo "error" exit#若丢包率不低于20%,则发送告警 elif [ $n -ge 20 ] then #这里也可做外发邮件告警 echo "more loss" else echo "$d : $ip is OK" > ip_monitor.log fi#监控间隔为30秒sleep 30done

5.批量修改指定目录下文件名、打包并还原文件名

#!/bin/bash##################################################批量修改指定目录下文件名、打包并还原文件名##################################################将目标文件夹下的所有指定类型文件的文件名查找存在指定文件中find /home/scripts -type f -name "*.txt" > /home/scripts/txt.list#通过for循环遍历所有文件,并依次改名for f in `cat /home/scripts/txt.list`do mv $f $f.bakdone#定义一个时间命名的目录作为打包文件的目录d=`date +%F`mkdir /home/scripts/txt_$d#将所有改名文件依次拷贝到打包文件的目录下for f in `cat /home/scripts/txt.list`do cp $f.bak /home/scripts/txt_$ddone#进入指定目录下进行打包cd /home/scriptstar -czvf txt.tar.gz txt_$d#还原文件名for f in `cat /home/scripts/txt.list`do mv $f.bak $fdone

注:虽然打包的文件多了一层文件名,但是对于还原文件名变得十分容易


6.判断本机80端口是否监听,如果不存在,则重启服务并发送邮件告警

#!/bin/bash############################################################判断本机80端口是否监听,如果不存在,则重启服务并发送邮件告警############################################################判断本机80端口是否监听,并执行相应动作(使用命令行作为判断条件时,命令行正确执行即满足if条件,且用于判定的命令行不需要加反引号)if netstat -ntpl |grep -q ':80 ' then exit else #这里也可做外发邮件告警 echo "error" #service nginx restartfi#判断是否启动成功,如未成功,则将错误信息通过邮件进行告警n=`pgrep -l httpd |wc -l` #列出所有httpd进程的pidif [ $n -eq 0 ] then touch /tmp/nginx_start.err /usr/local/nginx/sbin/nginx start 2> /tmp/nginx_start.errfiif [ -s apache_start.err ] #if -s 选项,文件大小非0时为真 then #这里也可做外发邮件告警 echo "error"fi

注:持续监控可以采用任务计划或while循环


7.多地备份数据库(本地保留一周、远程保留一月)

#!/bin/bash############################################################多地备份数据库(本地保留一周、远程保留一月)#date +%Y # 年份(四位) eg: 2018#date +%y # 年份后两位 eg: 18#date +%m # 月 eg: 07#date +%d # 日 eg: 10#date +%H # 24小时 eg: 11#date +%M # 分 eg: 37#date +%S # 秒 eg: 24#date +%w # 星期(0-6) 0 表示周日#date +%F # 完整日期 =%Y-%m-%d #date +%T # =%H:%M:%S 时间 eg: 10:46:45###########################################################d1=date +%wd2=date +%y-%m-dbakdir='/backup'r_bakdir='远程备份的IP地址':'远程备份的目录' #通过ssh同步rs_bakdir='远程备份的IP地址'::'模块名称' #通过服务同步#定义接下来的命令涉及到的所有的正确输出记录在正确日志的目录下,所有的错误输出记录在错误日志的目录下exec 1> '正确日志的目录' 2>'错误日志的目录'echo "mysql backup begin at `date +"%F %T"`"#备份到本地机器的文件以星期命名,周期为7天,超出7天后,同名的旧文件会被新文件覆盖mysqldump -u'指定的用户' -p'指定的密码' '指定的数据库' > $bakdir/$d1.sql#备份到远程机器的文件以日期命名,周期为31天,超出31天后,同名的旧文件会被新文件覆盖rsync -az $bakdir/$d1.sql $r_bakdir/$d2.sqlecho "mysql backup end at `date +"%F %T"`"

这些实际上是平时写shell脚本的一个一个片段,主要是记住实现的方式,逻辑通就可以了,下次就知道怎么写了。

转载于:https://www.cnblogs.com/cangqinglang/p/11330595.html

shell脚本实例,通向shell脚本大师的必经之路相关推荐

  1. python抢红包脚本实例-这个Python脚本牛逼了,秒抢红包,再不怕错过一个亿了!...

    原标题:这个Python脚本牛逼了,秒抢红包,再不怕错过一个亿了! 曾经有一份"份额很足"的大红包,摆在我面前,我没有好好珍惜,如果上天再给我一次机会,我会对发红包的人说三个字:再 ...

  2. 超硬核!11 个非常实用的 Python 和 Shell 拿来就用脚本实例!

    作者:养乐多     编辑:JackTian 来源:公众号「杰哥的IT之旅」 ID:Jake_Internet 转载请联系授权(微信ID:Hc220088) 不得不说,脚本在我们的日常工作中可以提高很 ...

  3. mysql运行状态监控研究内容_如何监控mysql主从的运行状态shell脚本实例介绍

    如何监控mysql主从的运行状态shell脚本实例介绍. #!/bin/bash #define mysql variable mysql_user="root" mysql_pa ...

  4. linux 查重脚本,Linux脚本学习必经之路:Shell脚本实例分享

    写shell脚本还是一样,思路第一,语法其次,下面分享几个脚本实例,大家主要是理解一下里面的思路,语法稍微注意一下. 1. 观察数字,输出包含前6个数字在内的16个数字 观察以下数字,看有什么规律: ...

  5. 超硬核,11个非常实用的 Python 和 Shell 脚本实例

    原文地址: https://developer.51cto.com/article/712305.html Python 脚本部分实例:企业微信告警.FTP 客户端.SSH 客户端.Saltstack ...

  6. 23 个非常实用的 Shell 拿来就用脚本实例

    shell脚本是帮助程序员和系统管理员完成费时费力的枯燥工作的利器,是与计算机交互并管理文件和系统操作的有效方式.区区几行代码,就可以让计算机接近按照你的意图行事. 为大家整理了23个实例,通过23个 ...

  7. shell下的九大脚本实例

    一.找出ssh连接自己的次数最多的主机ip? 利用命令实现: 1. 利用last命令查看谁都ssh连接过自己 2. last -i查看谁都ssh连接过自己并显示ip 3. 查看谁都ssh连接过自己并过 ...

  8. 109 个实用 Shell 脚本实例,代码清晰拿来就能用!(附pdf)

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合. Shell可以直接使用在win/Unix/Linux上面 ...

  9. 35 个非常实用的 Shell 拿来就用脚本实例!

    开发者(KaiFaX) 面向全栈工程师的开发者专注于前端.Java/Python/Go/PHP的技术社区 来源 | blog.csdn.net/weixin_42405670/article/deta ...

  10. linux 脚本 获取pid,Shell脚本中获取进程ID的方法

    提问: 我想要知道运行中脚本子shell的进程id.我该如何在shell脚本中得到PID. 当我在执行shell脚本时,它会启动一个叫子shell的进程.作为主shell的子进程,子shell将she ...

最新文章

  1. 给jdk写注释系列之jdk1.6容器(1):ArrayList源码解析
  2. tensorflow2caffe(1) : caffemodel解析,caffemodel里面到底记录了什么?
  3. java中HashMap遍历详解
  4. Hive中视图机制的初步使用及分析
  5. 如何验证某个 string 是否为合法的 GUID ?
  6. 字符设备驱动基础篇0——驱动开发初体验
  7. 深入MTK平台bootloader启动分析笔记
  8. java volatile 原子性_Java中volatile不能保证原子性的证明
  9. 一张图读懂哔哩哔哩2019Q1财报
  10. 快速搭建开发环境(Vs Code)
  11. CURL的学习和应用
  12. 耦合器滤波器衰减器无源器件自动化测试软件系统,纳米NSAT-1000
  13. AndroidStudio的强大搜索功能介绍!全局搜索、搜索文件、搜索类、搜索文本、搜索一切
  14. 计算机专业国际竞赛,国际计算机竞赛深度剖析
  15. Arnold材质节点篇-随机颜色抖动color_jitter、三平面triplanar、ambient_occlusion环境光遮蔽、curvature曲率
  16. drop,delete与truncate的区别
  17. 互联网跟移动互联网_互联网如何变坏
  18. windows系统下安装深度系统deepin
  19. 使用 SimpleWebRTC 构建 WebRTC 视频聊天应用程序
  20. FM33G0系列之低功耗

热门文章

  1. 哪些情况下适合发短信?
  2. 美团外卖商场餐厅查无实体 “幽灵店铺”仍存
  3. 数说故事线下美妆店铺调研:店铺运营方法论分析
  4. python shutil_python的shutil模块
  5. 使用PHP获取优酷网视频缩略图
  6. ssm电子商城管理系统
  7. matlab读取nastran模型,PatranNastran载荷提取方法介绍
  8. linux系统编程3-read、lseek函数
  9. c++中用opengl的gl函数在三维空间中绘制圆形和画球体
  10. 第五天:数组、方法和字符串day0428