本文共 4588 字,大约阅读时间需要 15 分钟。
和市面书籍不同,本书是作者经过15年以上运维工作及教学工作后,创新类企业级实战书籍,适合所有学习及从事Linux相关工作的读者。
《跟老男孩学习Linux运维:Shell高级编程实战》第7章,本书已于2017年1月出版,为了答谢读者,特将本章的部分代码分享如下:
有关代码的思路分析和详细注释,请支持作者购买正版书籍获得。
购作者签名书请访问下面地址:
如果你觉得看书枯燥乏味,可以购买本书配套视频和老男孩隔空对话学习。
(最后更新日期2017年2月2日)
[root@oldboy C07]# cat 7_1.sh#!/bin/bashif [ -f /etc/hosts ] then echo "[1]"fiif [[ -f /etc/hosts ]] then echo "`1`"fiif test -f /etc/hosts then echo "test1"fi[root@oldboy C07]# cat 7_2.sh#!/bin/bashFreeMem=`free -m|awk 'NR==3 {print $NF}'`CHARS="Current memory is $FreeMem."if [ $FreeMem -lt 1000 ] then echo $CHARS|tee /tmp/messages.txt #mail -s "`date +%F-%T`$CHARS" 490004487@qq.com /dev/nullif [ `nmap 127.0.0.1 -p 3306 2>/dev/null|grep open|wc -l` -gt 0 ] then echo "MySQL is Running."else echo "MySQL is Stopped." /etc/init.d/mysqld startfiecho method6-------------------[ `rpm -qa nc|wc -l` -lt 1 ] && yum install nc -y &>/dev/nullif [ `nc -w 2 127.0.0.1 3306 &>/dev/null&&echo ok|grep ok|wc -l` -gt 0 ] then echo "MySQL is Running."else echo "MySQL is Stopped." /etc/init.d/mysqld startfiecho method7-------------------if [ `ps -ef|grep -v grep|grep mysql|wc -l` -ge 1 ] then echo "MySQL is Running."else echo "MySQL is Stopped." /etc/init.d/mysqld startfi[root@oldboy C07]# cat 7_4_2.sh#!/bin/shecho http method1-------------------if [ `netstat -lnt|grep 80|awk -F "[ :]+" '{print $5}'` -eq 80 ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method2-------------------if [ "`netstat -lnt|grep 80|awk -F "[ :]+" '{print $5}'`" = "80" ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method3-------------------if [ `netstat -lntup|grep nginx|wc -l` -gt 0 ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method4-------------------if [ `lsof -i tcp:80|wc -l` -gt 0 ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method5-------------------[ `rpm -qa nmap|wc -l` -lt 1 ] && yum install nmap -y &>/dev/nullif [ `nmap 127.0.0.1 -p 80 2>/dev/null|grep open|wc -l` -gt 0 ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method6-------------------[ `rpm -qa nc|wc -l` -lt 1 ] && yum install nc -y &>/dev/nullif [ `nc -w 2 127.0.0.1 80 &>/dev/null&&echo ok|grep ok|wc -l` -gt 0 ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method7-------------------if [ `ps -ef|grep -v grep|grep nginx|wc -l` -ge 1 ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method8-------------------if [[ `curl -I -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1` =~ [23]0[012] ]] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method9-------------------if [ `curl -I http://127.0.0.1 2>/dev/null|head -1|egrep "200|302|301"|wc -l` -eq 1 ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfiecho http method10-------------------if [ "`curl -s http://127.0.0.1`" = "oldboy" ] then echo "Nginx is Running."else echo "Nginx is Stopped." /etc/init.d/nginx startfi[root@oldboy C07]# cat 7_6.sh#!/bin/basha=$1b=$2#no.1 judge arg nums.if [ $# -ne 2 ];then echo "USAGE:$0 arg1 arg2" exit 2fi#no.2 judge if intexpr $a + 1 &>/dev/nullRETVAL1=$?expr $b + 1 &>/dev/nullRETVAL2=$?if [ $RETVAL1 -ne 0 -a $RETVAL2 -ne 0 ];then echo "please input two int again" exit 3fiif [ $RETVAL1 -ne 0 ];then echo "The first num is not int,please input again" exit 4fiif [ $RETVAL2 -ne 0 ];then echo "The second num is not int,please input again" exit 5fi#no.3 compart two num.if [ $a -lt $b ];then echo "$a<$b"elif [ $a -eq $b ];then echo "$a=$b"else echo "$a>$b"fi[root@oldboy C07]# cat 7_9.sh#!/bin/shif [ $# -ne 1 ] then echo $"usage:$0{start|stop|restart}" exit 1fiif [ "$1" = "start" ] then rsync --daemon if [ `netstat -lntup|grep rsync|wc -l` -ge 1 ] then echo "rsyncd is started." exit 0 fielif [ "$1" = "stop" ] then pkill rsync if [ `netstat -lntup|grep rsync|wc -l` -eq 0 ] then echo "rsyncd is stopped." exit 0 fielif [ "$1" = "restart" ] then pkill rsync sleep 2 rsync --daemonelse echo $"usage:$0{start|stop|restart}" exit 1fi
书不是看会的,而是不断练习会的! 看书过程中遇到勘误错误,可以发到下面地址。
转载地址:http://qswmx.baihongyu.com/