個人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 " gitd?ir"]thenread?p"是否創建目錄,輸入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 " gitd?ir;;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]thenmail?s"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.pswp.cn/web/70143.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70143.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70143.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django 5 實用指南(一)安裝與配置

1.1 Django5的背景與發展 Django 自從2005年由Adrian Holovaty和Simon Willison在 Lawrence Journal-World 新聞網站上首次發布以來&#xff0c;Django 一直是 Web 開發領域最受歡迎的框架之一。Django 框架經歷了多個版本的演進&#xff0c;每次版本更新都引入了新功能、改進了…

百度搜索融合 DeepSeek 滿血版,開啟智能搜索新篇

百度搜索融合 DeepSeek 滿血版&#xff0c;開啟智能搜索新篇 &#x1f680; &#x1f539; 一、百度搜索全量接入 DeepSeek &#x1f539; 百度搜索迎來重要升級&#xff0c;DeepSeek 滿血版全面上線&#xff01;&#x1f389; 用戶在百度 APP 搜索后&#xff0c;點擊「AI」即…

RabbitMQ服務異步通信

消息隊列在使用過程中&#xff0c;面臨著很多實際問題需要思考&#xff1a; 1. 消息可靠性 消息從發送&#xff0c;到消費者接收&#xff0c;會經理多個過程&#xff1a; 其中的每一步都可能導致消息丟失&#xff0c;常見的丟失原因包括&#xff1a; 發送時丟失&#xff1a; 生…

【教程】MySQL數據庫學習筆記(七)——多表操作(持續更新)

寫在前面&#xff1a; 如果文章對你有幫助&#xff0c;記得點贊關注加收藏一波&#xff0c;利于以后需要的時候復習&#xff0c;多謝支持&#xff01; 【MySQL數據庫學習】系列文章 第一章 《認識與環境搭建》 第二章 《數據類型》 第三章 《數據定義語言DDL》 第四章 《數據操…

膠囊網絡動態路由算法:突破CNN空間局限性的數學原理與工程實踐

一、CNN的空間局限性痛點解析 傳統CNN的瓶頸&#xff1a; 池化操作導致空間信息丟失&#xff08;最大池化丟棄85%激活值&#xff09;無法建模層次空間關系&#xff08;旋轉/平移等變換不敏感&#xff09;局部感受野限制全局特征整合 示例對比&#xff1a; # CNN最大池化示例…

#滲透測試#批量漏洞挖掘#Apache Log4j反序列化命令執行漏洞

免責聲明 本教程僅為合法的教學目的而準備,嚴禁用于任何形式的違法犯罪活動及其他商業行為,在使用本教程前,您應確保該行為符合當地的法律法規,繼續閱讀即表示您需自行承擔所有操作的后果,如有異議,請立即停止本文章讀。 目錄 Apache Log4j反序列化命令執行漏洞 一、…

深入剖析Spring MVC

一、Spring MVC 概述 1. 什么是 Spring MVC&#xff1f; Spring MVC 是基于 Spring 框架的 Web 框架&#xff0c;它實現了 MVC 設計模式&#xff0c;將應用程序分為三個核心部分&#xff1a; Model&#xff1a;封裝應用程序的數據和業務邏輯。 View&#xff1a;負責渲染數據…

機器學習入門-讀書摘要

先看了《深度學習入門&#xff1a;基于python的理論和實踐》這本電子書&#xff0c;早上因為入迷還坐過站了。。 因為里面的反向傳播和鏈式法則特別難懂&#xff0c;又網上搜了相關內容進行進一步理解&#xff0c;參考的以下文章&#xff08;個人認為都講的都非常好&#xff0…

【AI】mac 本地部署 Dify 實現智能體

下載 Ollama 訪問 Ollama 下載頁&#xff0c;下載對應系統 Ollama 客戶端。或者參考文章【實戰AI】macbook M1 本地ollama運行deepseek_m1 max可以跑deepseek嗎-CSDN博客 dify 開源的 LLM 應用開發平臺。提供從 Agent 構建到 AI workflow 編排、RAG 檢索、模型管理等能力&am…

[實現Rpc] 消息抽象層的具體實現

目錄 具象層 _ 消息抽象的實現 信息的抽象類 實現 JsonMessage JsonRequest & JsonResponse 消息-不同消息分裝實現 實現 Request RpcRequest TopicRequest ServiceRequest Response RpcResponse TopicResponse ServiceResponse 實現 生產工廠 本篇文章繼 …

計算機考研之數據結構:深入解析最大公約數與歐幾里得算法

一、生活中的公約數應用 在日常生活中&#xff0c;經常需要處理"均分分配"問題。例如&#xff1a;要將24塊巧克力和18塊餅干平均分給小朋友&#xff0c;最多能分給幾個小朋友&#xff1f;這就是典型的求最大公約數問題。 二、基本概念詳解 約數與公約數 約數&…

NCHAR_CS和CHAR_CS,導致UNION ALL 時,提示SQL 錯誤 [12704] [72000]: ORA-12704: 字符集不匹配

檢查涉及的數據表和列的字符集設置 -- 查詢表的字符集 SELECT parameter, value FROM nls_database_parameters WHERE parameter LIKE NLS_CHARACTERSET;-- 查詢列的字符集&#xff08;對于特定表&#xff09; SELECT column_name, character_set_name FROM all_tab_columns W…

算法之 跳躍游戲

文章目錄 55.跳躍游戲思路參考&#xff1a;56.合并區間 55.跳躍游戲 55.跳躍游戲 靈神思路 思路分析&#xff1a; 兩種思路&#xff0c;思路1是我們可以直接維護當前到達i的時候所能到達的最右的邊界mr&#xff0c;如果i>mr就說明無法到達i,否則就是可以到達&#xff1b;…

在C#中動態訪問對象屬性時,用表達式樹可以獲得高效性能

在C#中如何用表達式樹動態訪問對象屬性的問題。用戶可能已經知道反射的基本用法&#xff0c;但想用表達式樹來提高性能&#xff0c;因為表達式樹編譯后的委托執行速度比反射快。 首先&#xff0c;表達式樹的基本概念。表達式樹允許在運行時構建代碼&#xff0c;并編譯成可執行的…

深入解析 Flutter 性能優化:從原理到實踐

深入解析 Flutter 性能優化&#xff1a;從原理到實踐的全面指南 Flutter 是一個高性能的跨平臺框架&#xff0c;但在開發復雜應用時&#xff0c;性能問題仍然可能出現。性能優化是開發高質量 Flutter 應用的關鍵。本篇博客將從 Flutter 的渲染原理出發&#xff0c;結合實際場景…

使用 Python 爬蟲獲取微店快遞費用 item_fee API 接口數據

在電商運營中&#xff0c;快遞費用是影響商家利潤和用戶體驗的重要因素之一。微店作為國內知名的電商平臺&#xff0c;提供了豐富的 API 接口供開發者使用&#xff0c;其中也包括查詢商品快遞費用的接口。通過調用微店的 item_fee 接口&#xff0c;開發者可以獲取指定商品的快遞…

MySQL基本操作——包含增刪查改(環境為Ubuntu20.04,MySQL5.7.42)

1.庫的操作 1.1 創建數據庫 語法&#xff1a; 說明&#xff1a; 大寫的表示關鍵字 [] 是可選項 CHARACTER SET: 指定數據庫采用的字符集 COLLATE: 指定數據庫字符集的校驗規則 1.2 創建案例 創建一個使用utf8字符集的db1數據庫 create database db1 charsetutf8; …

Spring Boot 定時任務:輕松實現任務自動化

在現代應用開發中&#xff0c;定時任務是一個常見的需求。比如&#xff0c;我們可能需要定時清理過期數據、定時發送郵件通知等。 操作流程 開啟定時任務注解 在啟動類添加注解EnableScheduling 設置時間&#xff08;固定時間間隔&#xff09; 使用 Scheduled 注解創建定時…

七星棋牌全開源修復版源碼解析:6端兼容,200種玩法全面支持

本篇文章將詳細講解 七星棋牌修復版源碼 的 技術架構、功能實現、二次開發思路、搭建教程 等內容&#xff0c;助您快速掌握該棋牌系統的開發技巧。 1. 七星棋牌源碼概述 七星棋牌修復版源碼是一款高度自由的 開源棋牌項目&#xff0c;該版本修復了原版中的多個 系統漏洞&#…

【Rust中級教程】1.12. 生命周期(進階) Pt.2:生命周期變型、協變、不變、逆變

喜歡的話別忘了點贊、收藏加關注哦&#xff08;加關注即可閱讀全文&#xff09;&#xff0c;對接下來的教程有興趣的可以關注專欄。謝謝喵&#xff01;(&#xff65;ω&#xff65;) 這篇文章在Rust初級教程的基礎上對生命周期這一概念進行了補充&#xff0c;建議先看【Rust自…