个人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)
dodf -i >> /tmp/$d_logif [ "$i" -ge 1 ]thenmail -s "title" root < /tmp/$d_logfi

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
thenecho "没有pgrep命令"exit 1
fiif ! which ss &>/dev/null
thenecho "没有pgrep命令"exit 1
fi}#判断进程是否存在可以用ps aux | grep 服务名  
check_pid (){if pgrep "$1" &>/dev/nullthenreturn 0elsereturn 1fi
}#判断端口是否存在
check_port (){
#统计端口的行数
port=$(ss -npl|grep ":$2"|wc -l)if [ "$port" -ne "0" ] &>/dev/nullthenreturn 0elsereturn 1fi}
#判断端口和经常是否同时存在来判断服务是否正常
check_srv (){
if check_pid "$1" && check_port "$2"
thenecho "$1正常"
elseecho "$1不正常"fi
}check_tools
#输入相应服务和端口
check_srv ssh 22

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

#!/bin/bash#检查本机有没有curl命令
if ! which curl &>/dev/null
thenecho "没有安装curl"yum -y install curlif [ "$?" -ne "0" ]thenecho "没有curl"exitfi
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]"
thenecho "$1访问正常"
elseecho "$1访问不正常"
fi

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


#!/bin/bashfor mount_p in $(df -h | grep -v Size | grep -v tmpfs | awk '{print $NF}')
dotouch $mount_p/dir && rm -rf $mount_p/dirif [ "$?" -eq "0" ]thenecho "读写没问题"elseecho "读写有问题"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 $containerIdecho "Delete Container Success"
fi# 查找本地镜像(按项目名称过滤)
imageId=`docker images | grep ${project_name} | awk '{print $3}'`
# 如果找到本地镜像
if [ "$imageId" != "" ] ; then# 强制删除镜像(多个标签时也能删除)docker rmi -f $imageIdecho "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"

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言之函数封装技巧

目录 前言 一、函数在源代码中的三种状态 二、函数封装的运用 案例1&#xff1a;实现打印20以内的素数 案例2&#xff1a;存放因子数并返回长度 三、return返回与形参返回 四、<>与“” 五、解耦 总结 前言 在C语言中&#xff0c;函数封装是一种重要的技巧&#…

深度神经网络终极指南:从数学本质到工业级实现(附Keras版本代码)

深度神经网络终极指南&#xff1a;从数学本质到工业级实现&#xff08;附Keras版本代码&#xff09; 为什么深度学习需要重新理解&#xff1f;&#xff08;与浅层模型的本质差异&#xff09; 模型类型参数容量特征学习方式适合问题类型浅层模型102-104手动特征工程低维结构化数…

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…

IIS asp.net权限不足

检查应用程序池的权限 IIS 应用程序池默认使用一个低权限账户&#xff08;如 IIS_IUSRS&#xff09;&#xff0c;这可能导致无法删除某些文件或目录。可以通过以下方式提升权限&#xff1a; 方法 1&#xff1a;修改应用程序池的标识 打开 IIS 管理器。 在左侧导航树中&#x…

代码解读:如何将HunYuan T2V模型训练成I2V模型?

Diffusion models代码解读:入门与实战 前言:HunYuan T2V模型出来很久了,但是想要训练成I2V的模型还是有点难度。此外,还有很多预训练视频模型都是T2V的,可以借鉴本文的方法加入参考图作为条件,并严格保持视频的第一帧与Image一样。 目录 Patch Image Padding Channel …

windows事件倒计时器与提醒组件

widgets 这是桌面组件前端开源组件&#xff0c;作者称&#xff1a;项目还在持续完善中&#xff0c;目前包含键盘演示、抖音热榜、喝水提醒、生日列表、待办事项、倒计时、灵动通知、打工进度等多个组件 有vue编程能力的可以自己做组件 百度网盘 夸克网盘 桌面组件 | Ca…

汽车零部件工厂如何通过工业一体机实现精准控制

在汽车制造行业中&#xff0c;零部件的精度和质量直接关系到整车的性能与安全。随着汽车工业的快速发展&#xff0c;汽车零部件工厂对生产过程的精准控制提出了更高的要求。传统的生产管理模式往往依赖人工操作和分散的系统&#xff0c;难以满足现代汽车零部件工厂的需求。而工…

BMS保护板测试仪:电池安全与性能的坚实守护者

在新能源汽车、储能系统、电动工具等电池驱动型产品日益普及的今天&#xff0c;电池的安全性和性能成为了人们关注的焦点。而BMS保护板测试仪作为电池管理系统&#xff08;BMS&#xff09;中不可或缺的一部分&#xff0c;为电池的安全运行提供了有力保障。 BMS保护板测试仪的重…

Django的初步使用

1.安装Django pip install django 验证是否安装成功&#xff1a; $ python3 Python 3.8.10 (default, Jan 17 2025, 14:40:23) [GCC 9.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >…

(前端基础)CSS(一)

了解 Cascading Style Sheet&#xff1a;层叠级联样式表 CSS&#xff1a;表现层&#xff08;美化网页&#xff09;如&#xff1a;字体、颜色、边框、高度、宽度、背景图片、网页定位、网页浮动 css优势&#xff1a; 内容和表现分离网页结构表现统一&#xff0c;可以实现复用…

CASAIM与韩国DOOSAN集团达成合作,开启工业制造自动化检测新篇

近日&#xff0c;CASAIM与韩国知名跨国企业斗山集团&#xff08;DOOSAN&#xff09;达成战略合作&#xff0c;联合打造CASAIM全自动化智能检测系统&#xff0c;助力斗山集团全面提升产品质量检测精度与效率&#xff0c;完成智能化检测升级&#xff0c;保持在全球市场竞争中的领…

矛盾(WEB)

##解题思路 打开靶场就是一段自相矛盾的代码&#xff0c;既要num是数字类型&#xff0c;又要判断为1 这种情况我们会想到弱类型的编程语言&#xff0c;插件查看过后&#xff0c;php就是弱类型的语言&#xff0c;此处并非是严格相等&#xff0c;只是 因此可以根据弱类型编程语言…

[AI]docker封装包含cuda cudnn的paddlepaddle PaddleOCR

封装,启动时需要在GPU服务器上 显卡驱动 cuda等下载需要注册账号 环境Ubuntu 24.04 LTS镜像uvicorn-gunicorn-fastapi:python3.8显卡支持版本CUDA Version: 12.5cuda版本cuda_12.4.0_550.54.14_linux.runcudnn版本PaddlePaddle-GpuPaddleOCR 启动进入容器 docker run --gpus …

idea连接gitee(使用idea远程兼容gitee)

文章目录 先登录你的gitee拿到你的邮箱找到idea的设置选择密码方式登录填写你的邮箱和密码登录成功 先登录你的gitee拿到你的邮箱 具体位置在gitee–>设置–>邮箱管理 找到idea的设置 选择密码方式登录 填写你的邮箱和密码 登录成功

VisionTransformer(ViT)与CNN卷积神经网络的对比

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…

Java并发编程面试题:锁(17题)

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…

Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300的秘密武器

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 企业级应用开发的需求日益增长。今天&#xff0c;我们要介绍的是一个在GitHub上广受好评的开源项目——Jeesite5。这不仅是一个技术框架&#xff0c;更…

Python OpenCV图像去模糊实战:离焦模糊的修复原理与Python实现

针对因焦距未调好导致的彩色图像模糊问题,结合OpenCV的锐化处理和色彩空间转换技术,推荐以下分步解决方案: 一、YUV色彩空间锐化(保留颜色信息) 原理: YUV色彩空间:YUV色彩空间将图像分为亮度(Y)和色度(U和V)分量。通过仅处理亮度通道(Y),可以有效避免对颜色信…

深度学习算法优化如何实现?

深度学习算法优化是一个复杂而多维的过程&#xff0c;旨在提高模型的性能、准确性和效率。以下是一些实现深度学习算法优化的关键步骤和方法&#xff1a; 一、数据预处理与增强 数据清洗&#xff1a;去除重复、错误或无效的数据&#xff0c;确保数据集的准确性和一致性。数据增…

Windows平台的小工具,功能实用!

今天给大家分享一款超实用的Windows平台监控工具&#xff0c;堪称“桌面小管家”&#xff0c;能帮你轻松掌握电脑的各种运行状态&#xff0c;比如网速、下载速度、内存和CPU占用率等常用参数&#xff0c;让你的电脑运行情况一目了然。 TrafficMonitor 网速监控悬浮窗软件 这款…