15.常用的shell脚本

自动备份脚本

bash 复制代码
#!/bin/bash

# 备份源文件或目录
source_path="/path/to/source"
# 备份目标位置
target_path="/path/to/backup"

# 创建备份目录
mkdir -p $target_path

# 获取当前日期作为备份文件名
backup_file="${target_path}/backup_$(date +%Y%m%d%H%M%S).tar.gz"

# 打包并压缩备份文件
tar -czvf $backup_file $source_path

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "备份成功!备份文件路径:$backup_file"
else
    echo "备份失败!"
fi

网络测试脚本

bash 复制代码
#!/bin/bash

# 测试地址和端口
test_address="www.baidu.com"
test_port=80

# 执行网络测试
nc -zv $test_address $test_port

# 检查测试结果
if [ $? -eq 0 ]; then
    echo "网络连通!"
else
    echo "网络不可达!"
fi

日志分析脚本

bash 复制代码
#!/bin/bash

# 日志文件路径
log_file="/path/to/log/file.log"

# 提取关键信息
grep "error" $log_file > errors.log

# 发送邮件或短信通知管理员
mail -s "日志分析报告" admin@example.com < errors.log

文件监控脚本

bash 复制代码
#!/bin/bash

# 监控目录
monitor_dir="/path/to/monitor/directory"

# 检查变化
inotifywait -m $monitor_dir -e create,modify -q

# 发送邮件或短信通知
mail -s "文件变化通知" admin@example.com <<< "目录 $monitor_dir 中有新文件添加或修改!"

系统监控脚本

bash 复制代码
#!/bin/bash

# 获取系统信息
cpu_usage=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2}')
memory_usage=$(free -m | awk '/Mem/ { printf("%.2f"), $3/$2*100 }')
disk_usage=$(df -h / | awk '/\// {print $(NF-1)}')

# 记录日志
timestamp=$(date "+%Y-%m-%d %H:%M:%S")
echo "$timestamp CPU使用率:$cpu_usage% 内存使用率:$memory_usage% 磁盘使用率:$disk_usage" >> system.log

自动清理脚本

bash 复制代码
#!/bin/bash

# 清理临时文件
rm -rf /tmp/*

# 清理日志文件
find /var/log/ -type f -name "*.log" -exec rm -f {} \;

自动更新脚本

bash 复制代码
#!/bin/bash

# 更新软件包
apt update && apt upgrade -y

# 更新完成后重启系统
reboot

数据库备份脚本

bash 复制代码
#!/bin/bash

# 数据库信息
db_host="localhost"
db_user="root"
db_password="password"
db_name="database"

# 备份目标位置
backup_path="/path/to/backup"

# 获取当前日期作为备份文件名
backup_file="${backup_path}/backup_$(date +%Y%m%d%H%M%S).sql"

# 执行备份命令
mysqldump -h $db_host -u $db_user -p$db_password $db_name > $backup_file

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "备份成功!备份文件路径:$backup_file"
else
    echo "备份失败!"
fi

系统安全检查脚本

bash 复制代码
#!/bin/bash

# 检查系统漏洞
result=$(sudo apt list --upgradable)

# 如果有可升级的软件包,则提示管理员进行修复
if [ -n "$result" ]; then
    echo "系统存在可升级的软件包,请及时更新!"
else
    echo "系统安全,无需修复。"
fi

自动部署脚本

bash 复制代码
#!/bin/bash

# 依赖安装
apt update && apt install -y dependency1 dependency2

# 配置参数
sed -i 's/parameter1/value1/g' config-file1
sed -i 's/parameter2/value2/g' config-file2

# 启动服务
systemctl start service-name
相关推荐
Ruiery5 小时前
Linux 6.6内核 CPU 深度解析(七):调度器启动 — 从单核到多核,调度器分阶段点亮
linux·运维·服务器
50万马克的面包5 小时前
CSDN-栈队列数组-知识点整理
linux·运维·服务器
MicrosoftCloud5 小时前
用户权限 04|/etc/sudoers 安全配置:从最小授权到「别把 ALL 随便给人」
运维·安全·ubuntu·sudo·sudoers
wjkjpcba6 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试
linux·数据库·人工智能·smt贴片加工·pcba贴片加工厂
꯭自꯭闭꯭6 小时前
达梦事物特性及MVCC
linux·运维·数据库
91刘仁德8 小时前
HTTP协议详解:从URL到HTTP服务器的完整实战
服务器·网络·笔记·网络协议·http
亚川楼宇自控系统数据中心厂家8 小时前
实验室智能化管理系统|人环物智一体化管控平台
运维
羔羊++8 小时前
18_实验十七_其他命令与自定义启动变量
linux
zmsup9 小时前
Agent 上下文调优:结合 OpsArk 运维智能体,设计模型每一步真正需要的信息
运维·agent·上下文压缩·运维智能体·上下文调优
DYWorker00110 小时前
Linux驱动:RK3568 GMAC + YT8531C 千兆以太网全流程解剖
linux