10 个实战及面试常用 Shell 脚本编写

  1. 云栖社区>
  2. 博客>
  3. 正文

10 个实战及面试常用 Shell 脚本编写

java填坑路 2018-11-19 17:49:00 浏览953
展开阅读全文

注意事项

1)开头加解释器:#!/bin/bash

2)语法缩进,使用四个空格;多加注释说明。

3)命名建议规则:变量名大写、局部变量小写,函数名小写,名字体现出实际作用。

4)默认变量是全局的,在函数中变量local指定为局部变量,避免污染其他作用域。

5)有两个命令能帮助我调试脚本:set -e 遇到执行非0时退出脚本,set-x 打印执行过程。

6)写脚本一定先测试再到生产上。

1 获取随机字符串或数字

获取随机8位字符串:

img_ece0dc0dbf452fff000ae5884902ab60.png

获取随机8位数字:

img_0ba68ccc37c4eea04061ffb1fbc78b12.png

cksum:打印CRC效验和统计字节

2 定义一个颜色输出字符串函数

img_a411c2959c61b29a0583e7b371672693.png

function关键字定义一个函数,可加或不加。

3 批量创建用户

img_4c14617457764d025507d2b8c492b267.png

4 检查软件包是否安装

img_f565f63be13e52c601da8384d73f6bb0.png

5 检查服务状态


img_6208cebb6dace67e5cbcd42fa2889d85.png

6 检查主机存活状态

方法1:将错误IP放到数组里面判断是否ping失败三次

img_b08b70f255af8120f7f61fb80e45ba7c.png


方法2:将错误次数放到FAIL_COUNT变量里面判断是否ping失败三次

img_5d6d1cf28019e137dfc17de94b9f35cf.png

方法3:利用for循环将ping通就跳出循环继续,如果不跳出就会走到打印ping失败

img_d9b5f579d8f72ccabe52b1cfea606c86.png

7 监控CPU、内存和硬盘利用率

1)CPU

借助vmstat工具来分析CPU统计信息。

img_aa18a86e5269059051665f810740900c.png

2)内存

img_931bc4a9e237c54e7e07b15c0c96eb60.png

3)硬盘

img_1229539804f5b43c89df3a3eef23714d.png

8 批量主机磁盘利用率监控

前提监控端和被监控端SSH免交互登录或者密钥登录。

写一个配置文件保存被监控主机SSH连接信息,文件内容格式:IP User Port

img_043e71e01fe74d4d00451b6ab9b816a5.png

9 检查网站可用性

1)检查URL可用性

img_ff0d4fe1085f4de92494814e6e4b2dcc.png

使用方法:check_url www.baidu.com

2)判断三次URL可用性

思路与上面检查主机存活状态一样。

img_b589c79e45e607b8d5471f42af682ad9.png


img_fe9092dcb6e321f04af3b9865c7905b1.png


img_0f564620ff6273b806b28b722bfdfdd0.png

10 检查MySQL主从同步状态

img_99090497860985deeb9db1646f974551.png

本章写的Shell脚本例子都比较实用,在面试题中也经常出现,希望大家参考着多动手写写,不要复制粘贴就拿来跑,这样是学不会的!

欢迎工作一到五年的Java工程师朋友们加入Java填坑之路:860113481

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

网友评论

登录后评论
0/500
评论
java填坑路
+ 关注