偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

效率飆升!七個(gè)超實(shí)用 Shell 腳本,告別重復(fù)勞動,解放你的雙手!

運(yùn)維 系統(tǒng)運(yùn)維
今天分享七個(gè)簡單易學(xué)的自動化腳本,覆蓋備份、監(jiān)控、清理、檢查等高頻場景,新手也能輕松上手,讓你的Linux/Unix運(yùn)維管理瞬間起飛!

還在為重復(fù)的系統(tǒng)操作、文件整理、服務(wù)監(jiān)控而頭疼?Shell腳本就是你效率翻倍的秘密武器!今天分享7個(gè)簡單易學(xué)的自動化腳本,覆蓋備份、監(jiān)控、清理、檢查等高頻場景,新手也能輕松上手,讓你的Linux/Unix運(yùn)維管理瞬間起飛!

為什么你需要Shell腳本?

  • 自動化重復(fù)工作: 把那些枯燥的命令行操作打包成腳本,一鍵執(zhí)行!
  • 減少人為錯(cuò)誤: 腳本嚴(yán)格執(zhí)行預(yù)設(shè)步驟,避免手動操作的疏忽。
  • 提升工作效率: 把時(shí)間花在更有價(jià)值的事情上,而不是一遍遍敲命令。
  • 系統(tǒng)管理利器: 監(jiān)控、維護(hù)、部署,腳本都能幫你搞定。

干貨來襲!七個(gè)提升效率的Shell腳本:

1. 自動備份小能手:重要文件再也不怕丟!

場景: 定期自動備份你的工作目錄,壓縮存檔到備份位置(比如 /backups),文件名帶上日期,清晰明了。

腳本代碼:

#!/bin/bash

# 定義你的重要文件夾和備份存放地
SOURCE_DIR="/home/yourname/important_stuff" # ?? 改成你的重要目錄
BACKUP_DIR="/backups"                       # ?? 改成你的備份目錄
DATE=$(date +%Y-%m-%d)                     # 獲取今天的日期 (格式:年-月-日)

# 創(chuàng)建壓縮包備份 (tar.gz格式)
tar -czf "$BACKUP_DIR/backup_$DATE.tar.gz" "$SOURCE_DIR"

# 告訴你備份完成啦!
echo "[SUCCESS] Backup saved to: $BACKUP_DIR/backup_$DATE.tar.gz"

關(guān)鍵點(diǎn)說明:

  • tar -czf: 打包 (c) + 用gzip壓縮 (z) + 指定文件名 (f)。生成的 .tar.gz 文件又小又好管理。
  • date +%Y-%m-%d: 獲取當(dāng)前日期,讓備份文件名字自帶時(shí)間戳,方便查找歷史版本。

怎么用? 保存為 backup.sh,用 cron 定時(shí)任務(wù)設(shè)置每天/每周自動跑!

2. 磁盤空間守衛(wèi)者:快滿了?馬上發(fā)警報(bào)!

場景: 根分區(qū) / 的使用率超過你設(shè)定的警戒線(比如90%),自動發(fā)郵件提醒管理員,避免磁盤爆滿導(dǎo)致系統(tǒng)卡死。

腳本代碼:

#!/bin/bash

THRESHOLD=90                             # 設(shè)置你的警戒線百分比 (90%)
CURRENT_USAGE=$(df / | awk 'NR==2 {gsub("%","",$5); print $5}') # 提取根分區(qū)當(dāng)前使用率數(shù)值

# 判斷是否超過警戒線
if [ "$CURRENT_USAGE" -gt "$THRESHOLD" ]; then
    # 發(fā)送郵件報(bào)警 (需要提前配置好系統(tǒng)郵件發(fā)送功能)
    echo "WARNING! Disk usage on $(hostname) is at ${CURRENT_USAGE}%!" | mail -s "?? DISK SPACE ALERT! ??" admin@yourcompany.com # ?? 改成你的郵箱
fi

關(guān)鍵點(diǎn)說明:

  • df /: 查看根分區(qū)的磁盤使用情況。
  • awk 'NR==2 {gsub("%","",$5); print $5}': 魔法在這里!提取 df 輸出的第二行(數(shù)據(jù)行),去掉第五列(使用率)的 % 符號,只留下純數(shù)字。
  • mail -s: 發(fā)送郵件 (-s 指定主題)。 ??注意:需要預(yù)先配置好 mailutils或sendmail等郵件服務(wù)。

怎么用? 保存為 disk_alert.sh,用 cron 設(shè)置每5分鐘或每小時(shí)檢查一次。

3. 日志清潔工:自動清理陳年老日志!

場景: 定期清理 /var/log 目錄下那些超過30天的 .log 日志文件,釋放寶貴磁盤空間。

腳本代碼:

#!/bin/bash

# 查找并刪除 /var/log 下超過30天的 .log 文件
find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;

echo "Old log files (>30 days) in /var/log have been cleaned up."

關(guān)鍵點(diǎn)說明:

  • find /var/log: 在 /var/log 目錄下查找。
  • -type f: 只找文件(不包括目錄)。
  • -name "*.log": 只找文件名以 .log 結(jié)尾的。
  • -mtime +30: 只找修改時(shí)間在30天之前的文件。
  • -exec rm -f {} \;: 對找到的每一個(gè)文件執(zhí)行 rm -f(強(qiáng)制刪除)命令。{} 代表找到的文件名。

怎么用? 保存為 clean_logs.sh,用 cron 設(shè)置每周或每月跑一次。??謹(jǐn)慎操作!確保路徑和條件正確,避免誤刪。

4. 服務(wù)器健康檢查員:一鍵 ping 所有機(jī)器!

場景: 快速檢查你管理的多臺服務(wù)器或網(wǎng)絡(luò)設(shè)備是否在線,狀態(tài)一目了然。

腳本代碼:

#!/bin/bash

# 把你的服務(wù)器IP或域名放進(jìn)這個(gè)列表
SERVERS=("192.168.1.100" "192.168.1.101" "db01.yourdomain.com" "web-server") # ?? 改成你的服務(wù)器

echo "= Starting Server Status Check ="

for server in "${SERVERS[@]}"; do
    # Ping一次,靜默執(zhí)行(不顯示輸出),根據(jù)退出狀態(tài)碼判斷
    if ping -c 1 -W 2 "$server" &> /dev/null; then
        status="? UP"
    else
        status="? DOWN"
    fi
    echo "- $server: $status"
done

echo "= Check Complete ="

關(guān)鍵點(diǎn)說明:

  • SERVERS=(...): 定義一個(gè)數(shù)組,里面放你要檢查的所有服務(wù)器地址。
  • for server in ...: 循環(huán)遍歷數(shù)組中的每個(gè)服務(wù)器地址。
  • ping -c 1 -W 2: 發(fā)送1個(gè)探測包 (-c 1),最多等待2秒 (-W 2)。
  • &> /dev/null: 把命令的標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出都丟棄(不顯示在屏幕上)。
  • if ...; then ... else ... fi: 根據(jù) ping 命令的退出狀態(tài)碼(0表示成功/在線,非0表示失敗/離線)判斷服務(wù)器狀態(tài),并輸出帶表情符號的結(jié)果。

怎么用? 保存為 server_check.sh,需要檢查時(shí)直接運(yùn)行 ./server_check.sh。

5. 密碼生成神器:高強(qiáng)度隨機(jī)密碼秒生成!

場景: 快速生成一個(gè)包含大小寫字母、數(shù)字和特殊符號的強(qiáng)密碼(比如12位),用于賬戶注冊或密鑰設(shè)置。

腳本代碼:

#!/bin/bash

LENGTH=12  # ?? 設(shè)置你想要的密碼長度

# 利用 /dev/urandom 生成隨機(jī)字節(jié),過濾出需要的字符集
PASSWORD=$(tr -dc 'A-Za-z0-9!@#$%^&*()_+-=[]{}|;:,.<>?' < /dev/urandom | head -c "$LENGTH")

echo "?? Your secure password: $PASSWORD"

關(guān)鍵點(diǎn)說明:

  • /dev/urandom: Linux系統(tǒng)的優(yōu)質(zhì)隨機(jī)數(shù)源(足夠用于生成密碼)。
  • tr -dc '...': -d 刪除,-c 取反。意思是“刪除所有不在指定字符集 A-Za-z0-9!@#$%^&*()_+-=[]{}|;:,.<>? 中的字符”。這樣就只留下了我們想要的字符。
  • head -c "$LENGTH": 取過濾后字符流的前 $LENGTH 個(gè)字符。

怎么用? 保存為 gen_passwd.sh,需要密碼時(shí)運(yùn)行 ./gen_passwd.sh。??注意:/dev/urandom在絕大多數(shù)Linux系統(tǒng)上安全,但生成極高安全要求的密鑰對時(shí),/dev/random或?qū)S霉ぞ吒选?/p>

6. DNS穩(wěn)定性哨兵:實(shí)時(shí)監(jiān)控域名解析!

場景: 持續(xù)監(jiān)測某個(gè)重要域名(如你的網(wǎng)站域名)的DNS解析是否正常。一旦解析失敗(返回空結(jié)果),立即記錄時(shí)間和錯(cuò)誤信息到日志文件。

腳本代碼:

#!/bin/bash

DOMAIN="your-critical-domain.com" # ?? 改成你要監(jiān)控的關(guān)鍵域名
LOG_FILE="dns_monitor.log"        # 日志文件名

echo "Starting DNS monitoring for $DOMAIN. Press Ctrl+C to stop. Logs in $LOG_FILE"

while true; do  # 無限循環(huán)
    # 嘗試解析域名,只取最簡短的IP輸出
    RESULT=$(dig +short "$DOMAIN" 2> /dev/null)

    # 如果解析結(jié)果為空字符串
    if [ -z "$RESULT" ]; then
        echo "[ERROR][$(date +'%Y-%m-%d %H:%M:%S')] DNS resolution FAILED for $DOMAIN!" >> "$LOG_FILE"
    fi
    sleep 5  # 每5秒檢查一次 (?? 根據(jù)需要調(diào)整間隔)
done

關(guān)鍵點(diǎn)說明:

  • dig +short: 使用 dig 工具進(jìn)行DNS查詢,+short 參數(shù)讓它只輸出最核心的解析結(jié)果(通常是IP地址),簡潔明了。
  • [ -z "$RESULT" ]: 檢查變量 RESULT 是否為空字符串 (-z)??兆址馕吨?dig 沒有返回有效的解析結(jié)果(DNS失敗)。
  • >>"$LOG_FILE": 將錯(cuò)誤信息追加 (>>) 到日志文件末尾。
  • while true; do ... sleep 5; done: 創(chuàng)建一個(gè)無限循環(huán),每循環(huán)一次休眠5秒,實(shí)現(xiàn)持續(xù)監(jiān)控。按 Ctrl+C 停止。

怎么用? 保存為 dns_watchdog.sh,后臺運(yùn)行 (nohup ./dns_watchdog.sh &)。出現(xiàn)問題就查 dns_monitor.log。

7. 網(wǎng)站健康檢測儀:HTTP狀態(tài)碼實(shí)時(shí)追蹤!

場景: 持續(xù)檢查你的網(wǎng)站或API服務(wù)是否可用。每次檢查都記錄時(shí)間、目標(biāo)URL和HTTP狀態(tài)碼(200表示成功,其他如404/500表示有問題)到日志文件。

腳本代碼:

#!/bin/bash

URL="https://your-website.com/api/health" # ?? 改成你要監(jiān)控的URL
LOG_FILE="http_health.log"               # 日志文件名
CHECK_INTERVAL=10                        # 檢查間隔(秒) ?? 調(diào)整

echo "Monitoring HTTP status of $URL. Press Ctrl+C to stop. Logs in $LOG_FILE"

while true; do
    # 獲取HTTP狀態(tài)碼 (靜默訪問,只輸出狀態(tài)碼)
    STATUS_CODE=$(curl -o /dev/null -s -w "%{http_code}" "$URL")

    # 記錄到日志 (帶上時(shí)間戳)
    TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')
    if [ "$STATUS_CODE" -eq 200 ]; then
        echo "[OK][$TIMESTAMP] $URL - Status: $STATUS_CODE" >> "$LOG_FILE"
    else
        echo "[PROBLEM][$TIMESTAMP] $URL - Status: $STATUS_CODE" >> "$LOG_FILE"
    fi

    sleep "$CHECK_INTERVAL"
done

關(guān)鍵點(diǎn)說明:

(1) curl -o /dev/null -s -w "%{http_code}":

  • -o /dev/null: 把訪問到的網(wǎng)頁內(nèi)容丟棄(不保存也不顯示)。
  • -s: 靜默模式(不顯示進(jìn)度條或錯(cuò)誤信息)。
  • -w "%{http_code}": 告訴 curl 在訪問結(jié)束后,只輸出 HTTP 響應(yīng)狀態(tài)碼(如 200, 404, 500, 503 等)。

(2) [ "$STATUS_CODE" -eq 200 ]: 判斷獲取到的狀態(tài)碼是否等于200 (OK)。

(3) 日志清晰區(qū)分了成功 ([OK]) 和其他狀態(tài) ([PROBLEM]),方便后續(xù)分析排查。

怎么用? 保存為 http_monitor.sh,后臺運(yùn)行 (nohup ./http_monitor.sh &)。定期查看 http_health.log 或設(shè)置報(bào)警(當(dāng)非200狀態(tài)出現(xiàn)時(shí))。

總結(jié)

這7個(gè)腳本只是Shell自動化能力的冰山一角!它們展示了如何用簡潔的代碼解決日常運(yùn)維中的痛點(diǎn).

動手試試吧!

  • 將腳本保存為 .sh 文件 (如 my_backup.sh)。
  • 用 chmod +x my_backup.sh 賦予執(zhí)行權(quán)限。
  • 根據(jù)需要修改腳本里的路徑、閾值、郵箱、URL等參數(shù)。
  • 直接運(yùn)行 ./my_backup.sh 測試效果。
  • 使用 cron (定時(shí)任務(wù)) 或 nohup (后臺運(yùn)行) 實(shí)現(xiàn)自動化!

小貼士:

  • 操作重要文件前,先在小范圍或測試環(huán)境驗(yàn)證腳本!
  • 善用 cron 定時(shí)任務(wù) (crontab -e 編輯),讓腳本在指定時(shí)間自動運(yùn)行。
  • 遇到問題?echo 打印變量或使用 bash -x script.sh 調(diào)試是王道!
責(zé)任編輯:趙寧寧 來源: 攻城獅成長日記
相關(guān)推薦

2023-04-27 07:57:52

AutoIt自動化工具

2025-07-14 06:15:00

Python辦公自動化開發(fā)

2025-01-22 07:00:00

C++11構(gòu)造函數(shù)C++

2019-07-02 09:30:31

程序員勞動陷阱

2025-06-05 08:20:00

Shell腳本Linux系統(tǒng)管理

2024-02-04 13:36:00

2024-09-26 06:21:59

Python代碼

2023-08-22 10:25:19

CSS動畫網(wǎng)頁

2024-04-12 08:13:24

2023-06-04 17:13:26

.NET開發(fā)應(yīng)用程序

2021-04-22 10:28:52

開發(fā)技能代碼

2022-05-23 11:13:02

Python工具

2025-05-29 03:00:00

2018-05-24 08:47:15

數(shù)據(jù)存儲技巧

2024-07-01 18:04:57

2018-08-06 15:21:33

云計(jì)算

2024-01-31 12:13:02

JavaScriptSet元素

2022-05-13 09:16:49

Python代碼

2021-03-05 17:07:41

工具在線代碼

2023-03-07 16:09:08

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號