一、awk、变量、运算符、if多分支

awk:shell编辑器的一种文本处理工具/命令,同grep、sed一样均可解释正则。具体运用下面awk文本处理有详细说明。

变量:分为系统变量和临时变量。变量一般由字母,下划线_ 开头,其他部分由字母、下划线、数字组成。

运算符

1.算术运算符:加+   减-    乘*    除/      取余%

2.关系操作符:大于>    小于<     大于等于>=    小于等于<=    等于==    不等于!=    与&&     或||

3.赋值运算符:赋值=    +=:x=x+1等同于x+=1      *=:x=x*1等同于x*=1          /=:x=x/2等同于x/=2            %=:例如NR%2=1

4.shell计算器:$(())    expr      bc -l

5.测试操作

  

if多分支

if+条件,then+命令。elif+条件,then+命令。elif可以有0个或多个。else +命令。可一有0个或一个。fi 。

  

二、awk文本处理

1.打印uid在30~40范围内的用户名。

cd /etc/passwd  #查看具体的信息数据

awk -F : '$3 >= 30 && $3 <= 40{print $1}' /etc/passwd    #$3: 以“:”为分隔符的第三段内容。

因为没有30行所以操作未成功

echo $?    #测试命令是否成功

2.打印第5-10行的行号和用户名

awk -F : 'NR>=5&&NR<=10 {print NR,$1}' /etc/passwd   #NR代表行号,$1 :以“:”为分隔符的第一段内容。

3.打印奇数行用户名

awk -F : 'NR%2==1 {print NR "----" $1}' /etc/passwd

4.打印偶数行用户名

awk -F : 'NR%2!=1 {print NR,"----", $1}' /etc/passwd

5.打印字段数大于5的行的用户名

awk -F : '$1>=5 {print NR,$1}' /etc/passwd

6.打印UID不等于GID的用户名

awk -F: '$3!=$4 {print NR,$1}' /etc/passwd    #UID在第三段,GID在第四段。

7.打印没有指定shell的用户

awk -F: '$7!="/bin/bash" {print NR,$1}' /etc/passwd

三、shell脚本编写

1.自动部署、初始配置、并启动nginx反向代理服务

#!/bin/bash

echo '开始安装........'
yum install epel-release -y
yum install nginx -y
echo '更改配置...........'
a="/etc/nginx/nginx.conf "
echo '添加三台代理服务器IP地址.......'
sed -i "17a upstream app {" $a
read -p "输入第一台服务器IP地址: " IP1
sed -i "18a server $IP1;}" $a read -p "输入第二台服务器IP地址: " IP2
sed -i "18a server $IP2;" $a read -p "输入第三台服务器IP地址: " IP3
sed -i "18a server $IP3;" $a c="proxy_pass http://app;"
sed -i "51a $c" $a
echo "配置完成,启动服务............"
systemctl start nginx

  

后期可以使用for循环来简化流程。

2.自动部署、初始配置、并启动三台web

#!/bin/bash
echo '开始安装........'
yum install epel-release -y
yum install nginx -y
echo '初始化配置.......'
echo '启动服务........'
systemctl start nginx

配置IP地址为上面设置好的。

3.监控脚本:监控每台机器的内存使用率>70%,则输出报警信息

安装软件bc

free   #查看内存使用参数,vim b.sh   #编辑脚本

#!/bin/bash
while :
do
a=`free |awk 'NR==2{print $3/$2}'`
b=`echo "scale=2;$a/1"|bc|sed "s/\.//"`
echo '当前内存使用率:'$b%
(($b>70)) && echo '内存使用过高!!!!!'
sleep 2
done

  

最新文章

  1. php修改
  2. 纯js实现10分钟倒计时
  3. TcpClient类与TcpListener类
  4. js上传图片及预览功能
  5. Media Player框架
  6. window.open窗口居中和窗口最大化
  7. Python核心编程笔记---- print@2
  8. Theano学习笔记(三)——图结构
  9. C++模板--实现容器适配器
  10. ORACLE - 管理控制文件
  11. PHPUnit简介及使用
  12. 微信小程序实现标签页滑块效果
  13. 什么是数据库ACID?
  14. MySQL多表查询练习题
  15. Spark记录-Spark性能优化(开发、资源、数据、shuffle)
  16. MySQL+InnoDB semi-consitent read原理及实现分析(转)
  17. elementUI使用本地变量进行验证,监测不到本地变量的变化 的问题
  18. HTTP杂项
  19. How to create a notification with NotificationCompat.Builder?AAAA
  20. Tp框架—方法中处理数据

热门文章

  1. 编绎调试HotSpot JVM及在Eclipse里调试HotSpot一些步骤
  2. Timer和TimerTask详解
  3. HDU——2087剪花布条
  4. Eclipse + Apache Axis2 发布RESTful WebService(三)第一个程序Hello Axis2 !(未成功)
  5. polyfill for Function--源码
  6. 眉目传情之匠心独运的kfifo【转】
  7. http协议相关面试题
  8. 算法 &amp; 数据结构——任意多边形填充
  9. XSD(XML Schema Definition)学习笔记
  10. 微信公众号手机端PC端多客服系统