概述

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


方法要点

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

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

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


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

linuxshell脚本编程入门(详解LinuxShell脚本编写技巧)(1)


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"

linuxshell脚本编程入门(详解LinuxShell脚本编写技巧)(2)


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"

linuxshell脚本编程入门(详解LinuxShell脚本编写技巧)(3)


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

linuxshell脚本编程入门(详解LinuxShell脚本编写技巧)(4)

,