编写shell脚本(常用的shell脚本)

概述

Linux Shell是一个很难的知识板块。虽然大家都认真学,基本的语法很都掌握,但有需求时,很难直接上手编程,要么写了很久,要么写不好!对于初学者而言,因为没有实战经验,写不出来Shell脚本很正常,如果工作了几年的运维还是写不出来,那就是没主动找需求,缺乏练习,缺乏经验。


方法要点

简单介绍一下编写shell脚本的时候的经验和方法。

1.理清思路:在我们想实现一个功能需要写脚本的时候是切忌不要想到就写,避免需要什么功能就先写个什么命令再去完善,这种写法常常会出现在结构上很难调整的问题。在我们开始写脚本之前一定要事先理清楚要怎么去实现这个功能,包括用什么命令和命令的先后顺序。

2.全局观:当我们理清脚本的思路之后,我们这个时候也不能马上就开始写,这个时候我们需要在脑海中思考每一个步骤中可能出现的情况,当出现各种情况后如何应对。在shell脚本中有可能我们要实现一个看似简单的功能会需要有多个条件判断,因为出现在我们当前系统上的情况只是在众多情况中的一种,我们要实现让脚本在任何机器上都能正常运行就必须有“全局观”。通俗讲就是一个排除bug的过程。

3.心细如丝:正如大家感慨的一样,shell脚本有非常多的引号括号空格,每一种意义不一样,多个空格少个空格意义又不一样,写个几十行的shell脚本能一次性写完就无错运行还是有一些难度的。我的在学习shell脚本一开始就强行给自己养成一个习惯,每写完一行就检查一次各种符号括号,刚开始速度非常慢,但是写得多了速度就越来越快而且出错率也越来越低,当养成习惯以后再去写那些符号就成了习惯没有刚开始那么痛苦了。

4.好记性不如烂键盘:有一句不好听的话虽然不好听,但是能提醒到一些正在学习shell脚本的朋友说出来也挺好。当你在抱怨shell脚本如何难写如何易出错的时候那么你总共写过多少行shell?你敲过多少次键盘?

下面分享几个shell脚本实例做练习。


1、检测服务器是否开启web服务(监听80),并判断服务种类

#!/bin/bash
####################################################
#检测服务器是否开启web服务(监听80),并判断服务种类
####################################################
#捕获监听80端口的服务名称
netstat -lntp|grep ":80"|awk -F '/' '{print $2}'|sort|uniq > /tmp/80.log
n=`wc -l /tmp/80.log|awk '{print $1}'`
s1=`cat /tmp/80.log`
#判断服务种类函数
judge_server()
{
case $1 in
 httpd)
 echo "this server is apache"
    ;;
 nginx)
    echo "this server is nginx"
    ;;
 tomcat)
    echo "this server is tomcat"
    ;;
 *)
    echo "this server is other"
    ;;
esac
}
if [ $n -eq 0 ]
 then
    echo "no web server!"
 exit 
fi
if [ $n -eq 1 ]
 then
    judge_server $s1
 else
    echo "there are $n web servers"
    for web in `cat /tmp/80.log`
    judge_server $web
fi
   


2、检测MySQL服务是否正常,判断是主库还是从库,如是从库判断主从服务是否正常

#!/bin/bash
##################################################################
#检测MySQL服务是否正常,判断是主库还是从库,如是从库判断主从服务是否正常
##################################################################
mysqlcmd="mysql -uroot -p123456"
#判断MySQL服务是否正常(正确执行MySQL命令)
$mysqlcmd -e "show processlist"
if [ $? -gt 0 ]
 then
 echo "this mysql is wrong."
 else
        #如果是从库则有返回值
 $mysqlcmd -e "show slave status\G" > /tmp/sql.log
 n=`wc -l /tmp/sql.log|awk '{print $1}'`
 if [ $n -gt 0 ]
 then
 y1=`grep 'Slave_IO_Running:' /tmp/sql.log`|awk -F ':' '{print $2}'|sed 's/ //g'`
 y2=`grep 'Slave_SQL_Running:' /tmp/sql.log`|awk -F ':' '{print $2}'|sed 's/ //g'`
 if [ $y1 == "yes" ] && [ $y2 == "yes" ]
 then
 echo "the slave is ok"
 else
 echo "the slave is wrong" 
 fi
 fi
fi
   


3、计算100以内所有能被3整除的正整数的和

#!/bin/bash
#############################################
#计算100以内所有能被3整除的正整数的和
############################################
sum=0
for i in {1..100}
do
 #求余数
 n=$[$i%3]
 if [ $n -eq 0 ]
 then
     sum=$[$sum $i]
 fi
done
echo "sum:$sum"
   


4、统计内存使用

#!/bin/bash
#########################################
#计算一下linux系统所有进程占用内存大小的和
#########################################
count=0
# 这个循环会遍历出每个进程占用的内存大小
for i in `ps aux |awk '{print $6}' |grep -v 'RSS'`
do
 # 将遍历出来的数字进行累加
 count=$[$count $i]
done
 
# 就得到所有进程占用内存大小的和了
echo "$count/kb"
   


后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!

(0)

相关推荐

  • Linux系统Shell命令常用功能使用详解

    Linux系统中Shell不仅仅是一个命令,而且是其他命令的解释器。可以调试其他命令,从而完成编译。那么Linux系统中Shell命令应该怎么使用呢? 其实作为命令语言互动式地解释和执行用户输入的命令 ...

  • 打开磁盘时提示"Windows 脚本宿主无法找到脚本文件"

    故障现象:电脑中毒后,对整个硬盘查杀,查杀完病毒后,打开C、D、E、F等分区时,都会弹出一个对话框提示“脚本宿主无法找到脚本文件,下面是脚本:D:autorun.vbs/行: 10/字符: 8/错误: ...

  • Classic Shell是什么 Classic Shell中文版下载

    Classic Shell是什么?Classic Shell是一款Windows开始菜单工具,它提供了XP经典样式、Vista双栏经典样式、Win7双栏进化样式等三种开始菜单样式,还可以替换自己喜欢的 ...

  • 靠谱助手如何开脚本 靠谱助手脚本编辑攻略教程大全

    靠谱助手是靠谱社区于2013年5月18日推出的一个专为第三方智能安卓模拟器提供管理的免费应用程序,靠谱助手目前支持bluestacks安卓模拟器,是国内最完美的PC端管理软件.靠谱助手是一款非常好用的 ...

  • Linux Shell脚本系列教程(七):脚本调试

    这篇文章主要介绍了Linux Shell脚本系列教程(七):脚本调试,本文讲解了Bash内建调试功能和自定义调试功能等内容,需要的朋友可以参考下 一、调试脚本 调试功能是每一种编程语言都应该实现的重要 ...

  • Linux下最常用的Shell命令的介绍(图文)

    有些人仍然会有这种愚蠢的想法,他们认为使用Linux就必须使用Linux shell命令。胡说!你可以不懂得任何Linux命令,比如说ps,grep,ls等,但是你仍然可以使用很多现代的Linux桌面 ...

  • Linux最常用的Shell命令

    有些人仍然会有这种愚蠢的想法,他们认为使用Linux就必须使用Linux shell命令。胡说!你可以不懂得任何Linux命令,比如说ps,grep,ls等,但是你仍然可以使用很多现代的Linux桌面 ...

  • CrazyTalk脚本 眨眼.张嘴.摇头脚本的使用方法

    CrazyTalk本的使用很多人不会.下面少丞小编我详细介绍一下CrazyTalk脚本的使用方法.如果需要脚本可以咨询小编! 操作方法 01 先打开CrazyTalk7加载人物图片(我以系统自带人物做 ...

  • 新天龙八部莫愁单开脚本天龙八部3外挂脚本辅助

    电脑软件 01 名称: 新天龙八部脚本辅助 > 02 大小: 6MB 类别: 音频媒体 语言: 中文 03 1.全智能化跑商,买卖各种最贵物品,一次跑完商线,支持多地跑商.2.自动挖矿.采药,支 ...

  • 如何在shell脚本中编写函数

    shell脚本能否和java.c.android语言一样编写函数呢,答案是肯定的,小编就带大家进入shell脚本的函数世界. 操作方法 01 执行"nano function.sh" ...