个人shell脚本分享

在周一到周五做增量备份,在周六周日做完全备份


#!/bin/bash

定义变量

SRC=“/path/to/source” # 源目录
BKUP=“/backup” # 备份主目录
FUL=“KaTeX parse error: Expected 'EOF', got '#' at position 22: …ull" #̲ 完全备份目录 INC="BKUP/inc” # 增量备份目录
DATE=$(date +%Y%m%d%H%M%S) # 当前日期时间

创建备份目录

mkdir -p $FUL
mkdir -p $INC

获取当前日期

DOW=$(date +%u) # 1=Monday, 7=Sunday

获取最近一次完全备份

LAST_FUL=$(ls -t $FUL | head -n 1)

完全备份

if [ $DOW -eq 6 ] || [ $DOW -eq 7 ]; then

cp -a $SRC $FUL/$DATE

else
# 增量备份
if [ -z “$LAST_FUL” ]; then

    cp -a $SRC $FUL/$DATE
fi

fi

实现从代码仓库拉取最新代码、构建、测试、部署到生产环境的自动化流程


  #!/bin/bash
read -p "输入git仓库名" a
git_url=$a
read -p "输入存放目录" b
git_dir=$b

if [ ! -d “ g i t d i r " ] t h e n r e a d − p " 是否创建目录,输入 y 或 n " c c a s e " {git_dir}" ] then read -p "是否创建目录,输入y或n" c case " gitdir"]thenreadp"是否创建目录,输入yn"ccase"c” in
y)
mkdir g i t d i r ; ; n ) e x i t 1 ; ; ∗ ) e c h o " 请输入选择 " ; ; e s a c g i t c l o n e " {git_dir} ;; n) exit 1 ;; *) echo "请输入选择" ;; esac git clone " gitdir;;n)exit1;;)echo"请输入选择";;esacgitclone"git_url" “$git_dir”
else
cd ${git_dir}
git pull origin master
fi
cd ${git_dir}
#要执行的代码脚本写这

检测所有磁盘分区使用率和inode使用率并记录到以当天日期为命名的日志文件里,当发现某个分区容量或者inode使用量大于85%


d_log=${d}.log
d_block=${d}block.log
for i in $(df -i | grep -v "IFree" | awk '{print $5}' | cut -d "%" -f 1)
do
        df -i >> /tmp/$d_log
        if [ "$i" -ge 1 ]
        then
                 mail -s "title" root < /tmp/$d_log
        fi

done

for i in $(df -h | grep -v “Use” | awk '{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 5}̲' | cut -d "%" …d_block
if [ " i " − g e 1 ] t h e n m a i l − s " t i t l e " r o o t < / t m p / i" -ge 1 ] then mail -s "title" root < /tmp/ i"ge1]thenmails"title"root</tmp/d_block
fi

done

一个巡检脚本,用来检测系统里面所有服务是否都正常运行假定,系统运行的服务有Nginx、MySQL、Redis、Tomcat要求脚本有内容输出,可以明确告知服务是否正常运行。提示:1)如果服务进程存在并且端口监听说明服务正常


 #!/bin/bash


#判断ss和pgrep是否存在 

check_tools () {
if ! which pgrep &>/dev/null
then
        echo "没有pgrep命令"
        exit 1
fi

if ! which ss &>/dev/null
then
        echo "没有pgrep命令"
        exit 1
fi

}

#判断进程是否存在可以用ps aux | grep 服务名  
check_pid (){
 if pgrep "$1" &>/dev/null
 then
        return 0
 else
        return 1
 fi
}


#判断端口是否存在
check_port (){
#统计端口的行数
port=$(ss -npl|grep ":$2"|wc -l)
 if [ "$port" -ne "0" ] &>/dev/null
 then
        return 0
 else
        return 1
 fi

}
#判断端口和经常是否同时存在来判断服务是否正常
check_srv (){
if check_pid "$1" && check_port "$2"
then
        echo "$1正常"
else
        echo "$1不正常"

fi
}

check_tools
#输入相应服务和端口
check_srv ssh 22

一个监控脚本,监控某站点访问是否正常


    #!/bin/bash

#检查本机有没有curl命令
if ! which curl &>/dev/null
then
        echo "没有安装curl"
        yum -y install curl
        if [ "$?" -ne "0" ]
        then
                echo "没有curl"
                exit
        fi
fi
#获取状态码
code=$(curl 3 -I $1 2>/dev/null | grep "HTTP" | awk '{print $2}')
#判断状态码是否正确
if echo $code | egrep -q "^2[0-9][0-9]|^3[0-9][0-9]"
then
        echo "$1访问正常"
else
        echo "$1访问不正常"
fi


写一个检测脚本,用来检测本机所有磁盘分区读写是否都正常。提示: 可以遍历所有挂载点,然后新建一个测试文件,然后再删除测试文件,如果可以正常新建和删除,那说明该分区没问题


#!/bin/bash

for mount_p in $(df -h | grep -v Size | grep -v tmpfs | awk '{print $NF}')
do

        touch $mount_p/dir && rm -rf $mount_p/dir
        if [ "$?" -eq "0" ]
        then
                echo "读写没问题"
        else
                echo "读写有问题"
        fi
done


自动部署更新服务脚本(流程是:停止并删除旧容器,删除旧镜像,拉取新镜像,运行新容器)


#!/bin/bash

# 接收脚本参数
# $1: Harbor仓库地址,例如192.168.1.100:5000
harbor_url=$1
# $2: Harbor中的项目名称,例如devops-project
harbor_project_name=$2
# $3: 项目/应用名称,例如user-service
project_name=$3
# $4: 镜像标签版本,例如v1.2.0
tag=$4
# $5: 容器端口映射,例如8080:8080(主机端口:容器端口)
port=$5

# 组合完整的镜像地址,例如:192.168.1.100:5000/devops-project/user-service:v1.2.0
imageName=$harbor_url/$harbor_project_name/$project_name:$tag

# 查找正在运行的容器(按项目名称过滤)
containerId=`docker ps -a | grep ${project_name} | awk '{print $1}'`
# 如果找到已有容器
if [ "$containerId" != "" ] ; then
    # 停止运行中的容器(优雅关闭,等待10秒)
    docker stop $containerId
    # 强制删除已停止的容器
    docker rm $containerId
    echo "Delete Container Success"
fi

# 查找本地镜像(按项目名称过滤)
imageId=`docker images | grep ${project_name} | awk '{print $3}'`
# 如果找到本地镜像
if [ "$imageId" != "" ] ; then
    # 强制删除镜像(多个标签时也能删除)
    docker rmi -f $imageId
    echo "Delete Image Success"
fi

# 登录Harbor私有仓库(硬编码凭证存在安全风险,建议使用安全凭据管理)
docker login -u DevOps -p P@ssw0rd $harbor_url

# 从Harbor拉取最新镜像
docker pull $imageName

# 启动新容器(后台运行)
# -d: 后台模式
# -p: 端口映射(将主机的$port前半部分映射到容器的$port后半部分)
# --name: 指定容器名称
docker run -d -p $port --name $project_name $imageName

# 输出部署结果
echo "Start Container Success"
echo "Container Name: $project_name"
echo "Access Port: $port"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/972175.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

小胡说技书博客分类(部分目录):服务治理、数据治理与安全治理对比表格

文章目录 一、对比表格二、目录2.1 服务2.2 数据2.3 安全 一、对比表格 下表从多个维度对服务治理、数据治理和安全治理进行详细对比&#xff0c;为读者提供一个直观而全面的参考框架。 维度服务治理数据治理安全治理定义对软件开发全流程、应用交付及API和接口管理进行规范化…

冒险岛079 V8 整合版源码搭建教程+IDEA启动

今天教大家来部署下一款超级怀旧游戏冒险岛&#xff0c;冒险岛源码是开源的&#xff0c;但是开源的代码会有各种&#xff0c;本人进行了加工整合&#xff0c;并且用idea进行了启动测试&#xff0c;经过修改后没有任何问题。 启动截图 后端控制台 前端游戏界面 声明 冒险岛源码…

Ubuntu 24.04.1 LTS 本地部署 DeepSeek 私有化知识库

文章目录 前言工具介绍与作用工具的关联与协同工作必要性分析 1、DeepSeek 简介1.1、DeepSeek-R1 硬件要求 2、Linux 环境说明2.1、最小部署&#xff08;Ollama DeepSeek&#xff09;2.1.1、扩展&#xff08;非必须&#xff09; - Ollama 后台运行、开机自启&#xff1a; 2.2、…

进阶数据结构——树状数组

前言 看这篇文章前我建议你们先看这个视频还有这个视频&#xff0c;不然你们可能看不懂。 一、树状数组的核心思想与本质 核心思想&#xff1a;树状数组&#xff08;Fenwick Tree&#xff09;是一种用于高效处理前缀和查询和单点更新的数据结构。 本质&#xff1a;通过二进…

vue3 + thinkphp 接入 七牛云 DeepSeek-R1/V3 流式调用和非流式调用

示例 如何获取七牛云 Token API 密钥 https://eastern-squash-d44.notion.site/Token-API-1932c3f43aee80fa8bfafeb25f1163d8 后端 // 七牛云 DeepSeek API 地址private $deepseekUrl https://api.qnaigc.com/v1/chat/completions;private $deepseekKey 秘钥;// 流式调用pub…

「软件设计模式」桥接模式(Bridge Pattern)

深入解析桥接模式&#xff1a;解耦抽象与实现的艺术 一、模式思想&#xff1a;正交维度的优雅解耦 桥接模式&#xff08;Bridge Pattern&#xff09;通过分离抽象&#xff08;Abstraction&#xff09;与实现&#xff08;Implementation&#xff09;&#xff0c;使二者可以独立…

Vue2项目,商城系统

Vue2商城系统项目 商城系统 包含功能: 下单平台&#xff0c;登录&#xff0c;购物车 纯前端无后台、无数据库 &#xff01;&#xff01; 纯前端无后台、无数据库 &#xff01;&#xff01; vue2 setup语法糖写法 本项目主要使用技术&#xff1a; - 基于vue2的项目框…

百度千帆平台对接DeepSeek官方文档

目录 第一步&#xff1a;注册账号&#xff0c;开通千帆服务 第二步&#xff1a;创建应用&#xff0c;获取调用秘钥 第三步&#xff1a;调用模型&#xff0c;开启AI对话 方式一&#xff1a;通过API直接调用 方式二&#xff1a;使用SDK快速调用 方式三&#xff1a;在千帆大模…

Breakout Tool

思科 CML 使用起来还是很麻烦的&#xff0c;很多操作对于习惯了 secure crt 或者 putty 等工具的网络工程师都不友好。 Breakout Tool 提供对远程实验室中虚拟机控制台与图形界面的本地化接入能力&#xff0c;其核心特性如下&#xff1a; Console 访问&#xff1a;基于 Telnet…

若依Flowable工作流版本监听器使用方法

1.前言 本文详细介绍如何在若依Flowable工作流版本&#xff08;RuoYi-Vue-Flowable&#xff09;中配置执行监听器和任务监听器。是以我二次开发的代码为基础&#xff0c;介绍如何配置监听器&#xff0c;已解决源码在新增或删除监听器出现的问题&#xff0c;如果需要二次开发的…

深度集成DeepSeek大模型:WebSocket流式聊天实现

目录 5分钟快速接入DeepSeek大模型&#xff1a;WebSocket实时聊天指南创建应用开发后端代码 (Python/Node.js)结语 5分钟快速接入DeepSeek大模型&#xff1a;WebSocket实时聊天指南 创建应用 访问DeepSeek官网 前往 DeepSeek官网。如果还没有账号&#xff0c;需要先注册一个。…

python进阶篇-面向对象

1.对象的定义 1.1 什么是对象 面向过程&#xff1a;将程序流程化 对象&#xff1a;就是“容器“&#xff0c;是用来存储数据和功能的&#xff0c;是数据和功能的集合体。 面向对象和面向过程没有优劣之分&#xff0c;它们只是使用的场景不同罢了。 1.2 为什么要有对象 有…

Spring Boot(8)深入理解 @Autowired 注解:使用场景与实战示例

搞个引言 在 Spring 框架的开发中&#xff0c;依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是它的一个核心特性&#xff0c;它能够让代码更加模块化、可测试&#xff0c;并且易于维护。而 Autowired 注解作为 Spring 实现依赖注入的关键工具&…

用deepseek学大模型04-机器学习建模过程

https://metaso.cn/s/7tEmBHr 目前已经学完深度学习的数学基础&#xff0c;给出机器学习建模的基本过程 好的&#xff0c;我现在需要回答用户的问题&#xff1a;已经学完深度学习的数学基础&#xff0c;现在要给出机器学习建模的基本过程。我需要结合我搜索到的资料来构建一个详…

【网络编程】网络编程基础:TCP/UDP 协议

一、什么是网络&#xff1f; 网络是信息传输&#xff0c;接收和共享的虚拟世界&#xff0c;通过把网络上的信息汇聚在一起&#xff0c;将这些资源进行共享。 初衷&#xff1a;知识共享。这里不得不提到Internet 的历史&#xff0d;它其实是“冷战”的产物&#xff1a; 1957年…

【算法】双指针(上)

目录 双指针 左右指针(对撞指针) 快慢指针 移动零 双指针解题 复写零 暴力解题 双指针解题(快慢指针) 快乐数 双指针解题(快慢指针) 盛最多水的容器 暴力解题(会超时) 双指针解题(左右指针) 有效三角形的个数 暴力解题 双指针解题(左右指针) 双指针 常见的双指…

CES Asia 2025:构建长效价值运营体系,赋能科技产业新发展

CES Asia 2025作为亚洲消费电子技术领域的盛会&#xff0c;将带来诸多令人瞩目的创新与变革。其中&#xff0c;亮点四——增加长效价值运营体系备受关注&#xff0c;为展会的参展企业和整个科技产业发展注入了新动力。 展会将推出365天在线供需对接平台&#xff0c;打破了传统…

【亚马逊开发者账号02】终审问题SA+review_Pre-review+Doc.xlsx

1.终审问题 你好感谢您在此过程中的回复和协作。所有想要构建具有受限 SP-API 角色的公开可用应用程序的开发人员都必须与我们的解决方案架构师团队一起完成架构审核。 这将需要详细说明应用程序的数据流、个人身份信息 &#xff08;PII&#xff09; 的数据保护控制&#xff0…

DeepSeek-R1论文阅读及蒸馏模型部署

DeepSeek-R1论文阅读及蒸馏模型部署 文章目录 DeepSeek-R1论文阅读及蒸馏模型部署摘要Abstract一、DeepSeek-R1论文1. 论文摘要2. 引言3. DeepSeek-R1-Zero的方法3.1 强化学习算法3.2 奖励建模3.3 训练模版3.4 DeepSeek-R1-Zero的性能、自进化过程和顿悟时刻 4. DeepSeek-R1&am…

地理探测器数据准备及驱动因素分析

地理探测器 地理探测器是一种用于分析空间数据的工具&#xff0c;主要用于检测和量化地理现象的空间异质性。它通过分析变量在不同区域内的分布特征及其相互关系&#xff0c;帮助我们理解自然和社会现象的空间分布规律以及背后可能的驱动因素。地理探测器主要由以下几个部分组…