林华伟优秀作者
原创内容 来源:小居数码网 时间:2024-07-28 16:57:01 阅读() 收藏:50 分享:48 爆
导读:您正在阅读的是关于【数码知识】的问题,本文由科普作家协会,生活小能手,著名生活达人等整理监督编写。本文有1342个文字,大小约为6KB,预计阅读时间4分钟。
概述Linux Shell是一个很难的知识板块。虽然大家都认真学,基本的语法很都掌握,但有需求时,很难直接上手编程,要么写了很久,要么写不好!对于初学者而言,因为没有实战经验,写不出来Shell脚本很正常,如果工作了几年的运维还是写不出来,那就是没主动找需求,缺乏练习,缺乏经验。
简单介绍一下编写shell脚本的时候的经验和方法。
1.理清思路:在我们想实现一个功能需要写脚本的时候是切忌不要想到就写,避免需要什么功能就先写个什么命令再去完善,这种写法常常会出现在结构上很难调整的问题。在我们开始写脚本之前一定要事先理清楚要怎么去实现这个功能,包括用什么命令和命令的先后顺序。
2.全局观:当我们理清脚本的思路之后,我们这个时候也不能马上就开始写,这个时候我们需要在脑海中思考每一个步骤中可能出现的情况,当出现各种情况后如何应对。在shell脚本中有可能我们要实现一个看似简单的功能会需要有多个条件判断,因为出现在我们当前系统上的情况只是在众多情况中的一种,我们要实现让脚本在任何机器上都能正常运行就必须有“全局观”。通俗讲就是一个排除bug的过程。
3.心细如丝:正如大家感慨的一样,shell脚本有非常多的引号括号空格,每一种意义不一样,多个空格少个空格意义又不一样,写个几十行的shell脚本能一次性写完就无错运行还是有一些难度的。我的在学习shell脚本一开始就强行给自己养成一个习惯,每写完一行就检查一次各种符号括号,刚开始速度非常慢,但是写得多了速度就越来越快而且出错率也越来越低,当养成习惯以后再去写那些符号就成了习惯没有刚开始那么痛苦了。
4.好记性不如烂键盘:有一句不好听的话虽然不好听,但是能提醒到一些正在学习shell脚本的朋友说出来也挺好。当你在抱怨shell脚本如何难写如何易出错的时候那么你总共写过多少行shell?你敲过多少次键盘?
下面分享几个shell脚本实例做练习。
#!/bin/bash#####################################################检测服务器是否开启web服务(监听80),并判断服务种类#####################################################捕获监听80端口的服务名称netstat -lntp|grep ":80"|awk -F '/' '{print $2}'|sort|uniq > /tmp/80.logn=`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 ] thenecho "no web server!" exit fiif [ $n -eq 1 ] thenjudge_server $s1 elseecho "there are $n web servers"for web in `cat /tmp/80.log`judge_server $webfi
#!/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 statusG" > /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 fifi
#!/bin/bash##############################################计算100以内所有能被3整除的正整数的和############################################sum=0for i in {1..100}do #求余数 n=$[$i%3] if [ $n -eq 0 ] then sum=$[$sum+$i] fidoneecho "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方面内容,感兴趣的朋友可以关注下!
上面就是小居数码小编今天给大家介绍的关于(linux使用shell编写脚本的步骤是什么)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
(464)个朋友认为回复得到帮助。
部分文章信息来源于以及网友投稿,转载请说明出处。
本文标题:LinuxShell命令行及脚本编程实例详解(linux使用shell编写脚本的步骤是什么):http://sjzlt.cn/shuma/152344.html