自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

51DevOps-刺天冬

博主QQ:1176494252

  • 博客(117)
  • 收藏
  • 关注

原创 Docker容器介绍

Docker基于容器技术的轻量级虚拟化解决方案Docker是容器引擎,把Linux的cgroup、namespace等容器底层技术进行封装抽象为用户提供了创建和管理容器的便捷界面(包括命令行和API)Docker是一个开源项目,诞生于2013年初,基于Google公司推出的Go语言实现微软、红帽Linux,IBM、Oracle等主流IT厂商已经在自己的产品里增加对Docker的支持相比其他早期的容器技术,Docker引入了一整套容器管理的生态系统,包括分层的镜像模型,容器注册库,友好的Res

2020-06-16 18:18:03 300

原创 容器进化史

容器简史容器概念始于 1979 年提出的 UNIX chroot,它是一个 UNIX 操作系统的系统调用,将一个进程及其子进程的根目录改变到文件系统中的一个新位置,让这些进程只能访问到这个新的位置,从而达到了进程隔离的目的。2000 年的时候 FreeBSD 开发了一个类似于 chroot 的容器技术 Jails,这是最早期,也是功能最多的容器技术。Jails 英译过来是监狱的意思,这个“监狱”(用沙盒更为准确)包含了文件系统、用户、网络、进程等的隔离。2001 Linux 也发布自己的容器技术 L

2020-06-16 18:14:42 551

原创 如何实现对MySQL数据库进行分库加分表备份,请用脚本实现?

[root@qls /service/scripts]# cat for-6.sh#!/bin/bash#引用函数[ -f /etc/init.d/functions ] && source /etc/init.d/functions#定义变量Date=$(date +%F)Db_User=rootDb_Pass=qls.123#编写循环for Db_Name in $(mysql -u$Db_User -p$Db_Pass -e "show databases;" |.

2020-05-12 17:55:23 456

原创 for循环打印下面这句话中字母数不大于6的单词。

I am qiuzengjiateacher welcome to Linux training class[root@qls /service/scripts]# cat for-1.sh#!/bin/bashfor i in I am qiuzengjiateacher welcome to Linux training classdo if [ ${#i} -le 6 ];then echo $i fidone[root@qls /service/sc.

2020-05-12 17:54:52 609

原创 开发shell脚本分别实现以脚本传参以及read读入的方式比较2个整数大小。以屏幕输出的方式提醒用户比较结果

注意:一共是开发2个脚本。当用脚本传参以及read读入的方式需要对变量是否为数字、并且传参个数做判断。[root@qls /service/scripts]# cat read-1.sh#!/bin/bash#提示用户输入第一个数字read -p "请输入第一个数字:" Num1if [[ ! $Num1 =~ ^[0-9]+$ ]];then echo "你输入的不是一个正整数!请重新输入!"fi#提示用户输入第二个数字read -p "请输入第二个数字:" Num2if [

2020-05-12 17:54:13 1508 1

原创 打印选择菜单,一键安装Web服务

[root@qls scripts]# sh menu.sh1.[install lamp]2.[install lnmp]3.[exit]please input the num you want: 2要求:1、当用户输入1时,输出“start installing lamp.”然后执行/server/scripts/lamp.sh,输出"lamp is installed" 后退出脚本;2、当用户输入2时,输出“start installing lnmp.”然后执行/server..

2020-05-12 17:53:33 400 1

原创 分别监控web服务和db服务是否正常,不低于3种监控策略。要求间隔1分钟,持续监控

[root@qls /service/scripts]# cat web-1.sh#!/bin/bashIp=10.0.0.7Ping() { ping -c1 -W1 $Ip &>/dev/null if [ $? -ne 0 ];then echo "IP地址${Ip}是不通的!" fi}Curl() { Http_State=$(curl -s -I $Ip | awk '/HTTP/{print $2}') i.

2020-05-12 17:53:00 340

原创 监控web站点目录(/var/html/www)下所有文件是否被恶意篡改。

监控web站点目录(/var/html/www)下所有文件是否被恶意篡改(文件内容被改了),如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次。[root@db01 ~]# mkdir -p /var/www/html[root@db01 ~]# find /etc -type f -name "*.conf" -exec cp {} /var/www/html/ \;[root@qls /service/scripts]# cat file_md5.sh#!/bin/bash

2020-05-12 17:52:28 744

原创 使用函数编写rsync的系统启动脚本

[root@qls /service/scripts]# cat case-1.sh#!/bin/bash#引用函数库[ -f /etc/init.d/functions ] && source /etc/init.d/functions#判断执行脚本是否存在位置变量if [ $# -ne 1 ];then echo "Usage: $0 {start|stop|status|restart}" exitfi#根据位置变量的结果进行执行相对应的命令Pid_F.

2020-05-12 17:51:05 117

原创 请破解这些字符串对应的md5sum前的RANDOM对应数字

已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c 1-8截取后的结果:2102929900205d1ca3da16771f6d12dd31d30eea[root@qls /service/scripts]# cat random.sh#!/bin/bashfor ((i=0;i<=32767;i++))do for j in $(cat /service/scripts/random.txt) do Ran=$(echo $i|m

2020-05-12 17:50:26 225

原创 Git标签使用

给最近的一次提交打个便签[root@git ~/git_test]# git log --oneline 426d222 modify c.txt merge master and qls428aecf modify c.txt mastera49ccaf modify c.txt qls76cd6d4 add new d.txt master1520f92 add new qls.txt qlscd9d652 modify a.txt 3f88afdb modify a.txt 2.

2020-05-12 17:47:23 108

原创 Git的分支应用

Git 的分支,其实本质上仅仅是指向提交对象的可变指针。 主分支master 在企业中,master分支是要非常稳定的,不能直接修改master分支里面的内容,使用的时候创建一个普通分支,等完成工作之后,将其合并到master分支上。[root@git ~/git_test]# git log --oneline --decoratecd9d652 (HEAD, master) modify a.txt 3 #当前的指针指向了masterf88afdb modify a.txt 2

2020-05-12 17:46:48 152

原创 Git恢复数据

#1.改变了工作目录中的文件,没有添加到暂存区 [root@git ~/git_test]# echo "222222222" >>a.txt [root@git ~/git_test]# cat a.txt111111111222222222[root@git ~/git_test]# git diff .diff --git a/a.txt b/a.txtindex bb81b3c..61eb21a 100644--- a/a.txt+++ b/a.txt@@ -1

2020-05-11 21:15:57 122

原创 Git的历史操作记录

#查看Git的历史操作记录 commit提交一次 就会记录一次日志 [root@git ~/git_test]# git logcommit 8e84d3462fce9f1fe6b56a190b1a515212c2fe5fAuthor: qls <qls@qq.com>Date: Mon May 11 15:20:08 2020 +0800 modify a.txt 1commit 51104b96b305351bcbf08ddbd83cb7167c65855

2020-05-11 21:15:16 301

原创 做运维如何“偷懒”

做运维如何“偷懒”做运维很累?不会“偷懒”吧人工运维与自动化运维做运维还在挣不多不少的钱吗一、开篇 大家好,我是刺天冬,我以前也是一名运维工程,现在做的工作请恕我不能透露; 不过在我做运维工程师的几年中,我发现大多数企业中的运维,每天做的都是重复的事情:服务器监控、代码上线、帮助研发取日志等等等,一点挑战性也没有,这就导致了在企业里很多的运维人员可以每天都“摸鱼”,而这个情况最终导致的结果就是: 1.企业花费更多的钱招聘更多的人或者更有能力的人 2.员工没有任何长进,变得越来越懒惰 3.能

2020-05-11 21:14:35 640

原创 Git文件内容的比对

git status 只能查看区域状态的不同,不能查看文件的内容不同之处 [root@git ~/git_test]# git status# On branch master# Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard chang.

2020-05-11 21:09:31 301

原创 Git如何将文件重命名

#第一种方法#1. 本地重命名 [root@git ~/git_test]# git status# On branch master# Changes not staged for commit:# (use "git add/rm <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working direc

2020-05-11 21:08:23 237

原创 Git删除暂存区的文件和工作目录中的文件

#第一种方法:#1.先删除暂存区中的文件[root@git ~/git_test]# git rm --cached a.txtrm 'a.txt'[root@git ~/git_test]# git status# On branch master## Initial commit## Changes to be committed:# (use "git rm --cached <file>..." to unstage)## new file: b.tx

2020-05-11 21:07:10 367

原创 Git添加及提交数据到暂存区及本地仓库

#显示Git当前仓库的状态 [root@git ~/git_test]# git status # On branch master #位于master分支## Initial commit #初始的提交#nothing to commit (create/copy files and use "git add" to track)#没有任何提交 创建或者拷贝文件和使用git add 命令进行建立跟踪#在工作目录中创建几个测试文件[root@git ~/git_test]

2020-05-11 21:06:00 922

原创 Git的安装部署

#环境准备 [root@git ~]# cat /etc/redhat-release CentOS Linux release 7.6.1810 (Core) [root@git ~]# uname -r3.10.0-957.el7.x86_64[root@git ~]# getenforce Disabled[root@git ~]# iptables-save [root@git ~]# dateMon May 11 11:53:23 CST 2020[root@git ~]#.

2020-05-11 21:04:36 113

原创 Git区域组成及四种状态

Git区域组成: 工作目录 暂存区域 本地仓库 远程仓库 Git四种状态 Untracked 未跟踪 Unmodified 未修改 Modified 已修改 Staged 已暂存

2020-05-11 21:03:16 122

原创 平均故障时间介绍

1个9 (1-90%)*365*24 = 876小时,表示该系统在连续运行1年时间里最多可能的业务中断时间是876小时。2个9 (1-99%)*365*24 = 87.6小时,表示该系统在连续运行1年时间里最多可能的业务中断时间是87.6小时。3个9:(1-99.9%)*365*24 = 8.76小时,表示该系统在连续运行1年时间里最多可能的业务中断时间是8.76小时。4个9:(1-99.99%)*365*24 = 0.876小时 = 52.6分钟,表示该系统在连续运行1年时间里最多可能的业

2020-05-11 20:46:43 2226

原创 MTTR、MTTF、MTBF详解

MTTR、MTTF、MTBF是体现系统可靠性的重要指标,但是三者容易混淆,下文使用图解方式解释三者之间的区别,希望能起到解惑的效用。MTTF (Mean Time To Failure,平均无故障时间),指系统无故障运行的平均时间,取所有从系统开始正常运行到发生故障之间的时间段的平均值。 MTTF =∑T1/ NMTTR (Mean Time To Repair,平均修复时间),指系统从发生故障到维修结束之间的时间段的平均值。MTTR =∑(T2+T3)/ NMTBF (Mean Time Be

2020-05-11 20:42:26 10060

原创 Linux中常见通配符和特殊符号

. #当前目录 .. #当前目录的上一级目录- #当前目录的上一次所在的目录~ #家目录 # #注释,注释后面的命令不会被执行 超级管理员的命令行提示符$ #引用变量 数组 普通用户命令行提示符 ! #非,取反 & #将程序放到后台运行 && #前面的命令执行成功!才会执行后面的命令|| #前面的命令执行失败!才会执行后面的命令| #管道,将前面的命令的输出结果以标准输入的方式给后面的命令\ #转义字符,取消一些特殊字符的含义, .

2020-05-10 22:49:27 165

原创 使用数组统计tcp的11中状态的数量

[root@qls /service/scripts/day13]# cat g_array-3.sh#!/bin/bash#声明关联数组declare -A Array_StateState=$(netstat -ant | awk 'NR>2{print $NF}')#循环赋值for a in $Statedo let Array_State[$a]++done#遍历与循环for i in ${!Array_State[@]}do echo -e "状态为:

2020-05-10 22:44:36 86

原创 使用数组统计出访问日志中每个URL访问次数

[root@qls /service/scripts/day13]# cat g_array-2.sh#!/bin/bash#声明关联数组declare -A Array_Stateawk '{print $11}' access.log >access_state.log#循环赋值while read linedo let Array_State[${line}]++done < access_state.log#遍历与循环for i in ${!Array_Sta

2020-05-10 22:43:56 356

原创 使用数组统计出访问日志中每个状态码的数量

[root@qls /service/scripts/day13]# cat g_array-2.sh#!/bin/bash#声明关联数组declare -A Array_Stateawk '{print $9}' access.log >access_state.log#循环赋值while read linedo let Array_State[${line}]++done < access_state.log#遍历与循环for i in ${!Array_Stat

2020-05-10 22:43:04 204

原创 使用数组统计出访问日志中每个IP的访问次数

[root@qls /service/scripts/day13]# cat g_array-1.sh#!/bin/bash#声明关联数组declare -A Array_Ips>ip.log#循环赋值while read linedo #Ip=$(echo $line |awk '{print $1}') 执行时间过长 let Array_Ips[${line%%\ *}]++done < access.log#遍历与循环for i in ${!Array_

2020-05-10 22:42:20 207

原创 使用数组取出系统中每一种shell的数量

[root@qls /service/scripts/day12]# cat array-2.sh#!/bin/bash#声明关联数组declare -A Array_Shells#批量赋值while read linedo #赋值 #Type=$(echo $line | awk -F: '{print $NF}') # /bin/bash 这个是索引 对应的值 次数 数字 let Array_Shells[${line##*:}]++done

2020-05-10 22:40:59 120

原创 Shell关联数组的应用

#赋值 定义关联数组需要声明 [root@qls /service/scripts/day12]# #声明关联数组[root@qls /service/scripts/day12]# declare -A g_array11. 单个进行赋值[root@qls /service/scripts/day12]# g_array1[name]=qls[root@qls /service/scripts/day12]# g_array1[age]=18[root@qls /servic.

2020-05-10 22:39:45 232

原创 Shell普通数组的应用

#赋值 1. 单个赋值 [root@qls /service/scripts/day12]# array1[0]=linux[root@qls /service/scripts/day12]# array1[1]=nginx[root@qls /service/scripts/day12]# array1[2]=php-fpm[root@qls /service/scripts/day12]# array1[3]=mariadb2. 赋值多个值 [root@qls /serv.

2020-05-10 22:39:00 100

原创 使用函数状态返回判断数字的范围

1. 提示用户输入一个数字,要进行判断 2. 如果用户输入的数值大于等于0且小于10 则返回状态码为03. 如果用户输入的数值大于等于10且小于20 则返回状态码为14. 如果用户输入的数值大于等于20且小30 则返回状态码为2 5. 输入其他数值 则返回36. 根据返回的状态进行判断 数值在什么范围 5这个数字大于等于0且小于10 [root@qls /service/scripts/day12]# cat return-2.sh#!/bin/bashfu.

2020-05-10 22:37:58 593

原创 函数状态返回的语法案例

[root@qls /service/scripts/day12]# cat fun-1.sh#!/bin/bashfun1() { echo "1" return 2}a=$(fun1)echo "函数的状态码值为:$?"echo "函数的返回值(函数的执行输出结果):$a"[root@qls /service/scripts/day12]# sh fun-1.sh函数的状态码值为:2函数的返回值(函数的执行输出结果):1#return场景示例[root@qls.

2020-05-10 22:36:55 126

原创 批量检查多个网站地址是否正常

要求:shell数组方法实现,检测策略尽量模拟用户访问思路http://www.driverzeng.comhttp://www.taobao.comhttp://www.increase93.comhttp://www.jddd.com [root@qls /service/scripts]# cat curl.sh#!/bin/bashWeb_Array=(http://www.driverzeng.com http://www.taobao.com http://www.incre

2020-05-10 22:35:49 626

原创 使用until循环打印九九乘法口诀表

[root@qls /service/scripts]# cat until-5.sh#!/bin/bashi=1until [ $i -gt 9 ]do j=1 until [ $j -gt $i ] do echo -en "${j}x$i=$(($i*$j))\t" let j++ done echo "" let i++done

2020-05-10 22:34:51 330

原创 使用while循环打印九九乘法口诀表

[root@qls /scripts]# cat while-10.sh#!/bin/bashi=1while [ $i -le 9 ]do j=1 while [ $j -le $i ] do echo -en "${j}x$i=$(($i*$j))\t" let j++ done echo "" let ...

2020-05-07 22:28:27 1407

原创 使用For循环实现9x9乘法表

[root@qls /service/scripts]# cat for-1.sh#!/bin/bashfor a in {1..9}do for b in $(seq 1 $a) do echo -en "${b}x$a=$(($a*$b))\t" done echo "" #空行 换行符done

2020-05-07 22:26:53 376

原创 判断/etc/inittab文件是否大于100行,如果大于,则显示”/etc/inittab is a big file.”否者显示”/etc/inittab is a small file

[root@qls /service/scripts]# cat inittab.sh#!/bin/bashLine=$(wc -l /etc/inittab | awk '{print $1}')if [ $Line -gt 100 ];then echo "/etc/inittab is a big file"else echo "/etc/inittab is a ...

2020-05-07 22:25:29 1483

原创 给定一个用户,来判断这个用户是什么用户,如果是管理员用户,则显示“该用户为管理员”,否则显示“该用户为普通用户

[root@qls /service/scripts]# cat user.sh#!/bin/bashread -p "请输入一个用户:" Userif [ -z $User ];then echo "用户不能为空" exitfiid $User &>/dev/nullif [ $? -eq 0 ];then Uid=$(awk -F: /^$U...

2020-05-07 22:24:46 1870

原创 判断某个文件是否存在

[root@qls /service/scripts]# cat file.sh#!/bin/bashread -p "请输入一个文件名称:" Fileif [ -z $File ];then echo "文件名不能为空!请重新输入!" exitfiif [[ $File =~ ^[/] ]];then if [ -f $File ];then ...

2020-05-07 22:24:09 127

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除