自动备份
该脚本可以用于自动备份指定目录中的文件,以保护数据的安全性。该脚本可以设置备份周期、备份目录、备份文件名等参数,可以使用tar命令进行文件压缩和归档。
#!/bin/bash
# 备份目录
backup_dir="/path/to/backup/dir"
# 被备份的目录
source_dir="/path/to/source/dir"
# 备份文件名,包括日期时间
backup_file_name="$(date +%Y-%m-%d_%H-%M-%S).tar.gz"
# 备份周期(每天备份一次)
backup_period="daily"
# 创建备份目录(如果不存在)
mkdir -p "$backup_dir"
# 根据备份周期,判断是否需要备份
if [[ "$backup_period" == "daily" ]]; then
if [[ "$(date +%H)" != "00" ]]; then
echo "不需要备份"
exit 0
fi
elif [[ "$backup_period" == "weekly" ]]; then
if [[ "$(date +%u)" != "1" ]]; then
echo "不需要备份"
exit 0
fi
elif [[ "$backup_period" == "monthly" ]]; then
if [[ "$(date +%d)" != "01" ]]; then
echo "不需要备份"
exit 0
fi
else
echo "无效的备份周期"
exit 1
fi
# 使用tar命令进行压缩和归档
tar -czf "$backup_dir/$backup_file_name" "$source_dir"
# 输出备份完成信息
echo "备份完成:$backup_dir/$backup_file_name"
系统监控
该脚本可以用于监控系统的各项指标,例如CPU使用率、内存使用率、磁盘使用率等,并在达到阈值时发送警报。该脚本可以使用top、free、df等命令获取系统信息,并使用mail命令发送邮件警报。
#!/bin/bash
# 邮件接收者地址
recipient="user@example.com"
# CPU 使用率阈值(百分比)
cpu_threshold=80
# 内存使用率阈值(百分比)
mem_threshold=80
# 磁盘使用率阈值(百分比)
disk_threshold=80
# 获取 CPU 使用率
cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
# 获取内存使用率
mem_usage=$(free | awk '/Mem/{printf("%d"), $3/$2*100}')
# 获取磁盘使用率
disk_usage=$(df -h / | awk '/\//{print $(NF-1)}' | sed 's/%//')
# 判断是否需要发送警报
if (( $(echo "$cpu_usage > $cpu_threshold" | bc -l) )); then
mail -s "CPU 使用率过高" "$recipient" <<< "CPU 使用率:$cpu_usage%"
fi
if (( $(echo "$mem_usage > $mem_threshold" | bc -l) )); then
mail -s "内存使用率过高" "$recipient" <<< "内存使用率:$mem_usage%"
fi
if (( $(echo "$disk_usage > $disk_threshold" | bc -l) )); then
mail -s "磁盘使用率过高" "$recipient" <<< "磁盘使用率:$disk_usage%"
fi
数据库备份
该脚本可以用于自动备份数据库中的数据,以保护数据的安全性。该脚本可以使用mysqldump命令备份MySQL数据库,或使用pg_dump命令备份PostgreSQL数据库,还可以设置备份周期、备份目录、备份文件名等参数。
#!/bin/bash
# MySQL 用户名和密码
mysql_user="your_username"
mysql_password="your_password"
# 备份文件名(使用当前日期作为后缀)
backup_file="backup-$(date +%F).sql"
# 备份目录
backup_dir="/path/to/backup/dir"
# 执行备份
mysqldump -u "$mysql_user" -p"$mysql_password" --all-databases > "$backup_dir/$backup_file"
自动清理
该脚本可以用于定期清理系统中的临时文件、日志文件、无用文件等,以释放磁盘空间。该脚本可以使用find命令查找目标文件,并使用rm命令删除文件。
#!/bin/bash
# 清理目录
clean_dir="/path/to/clean/dir"
# 清理文件类型
clean_filetypes="*.log *.tmp *.bak"
# 清理文件的最后修改时间(单位:天)
clean_days=7
# 查找并删除目标文件
find "$clean_dir" -name "$clean_filetypes" -mtime +$clean_days -exec rm {} \;
网络监控
该脚本可以用于监控网络的连通性、带宽、延迟等指标,以判断网络是否正常工作。该脚本可以使用ping、traceroute、curl等命令测试网络,还可以使用crontab命令定时运行。
#!/bin/bash
# 监控目标IP地址
target_ip="192.168.1.1"
# ping测试参数
ping_count=5
ping_interval=1
# curl测试参数
curl_timeout=5
# 运行ping测试
ping_result=$(ping -c $ping_count -i $ping_interval $target_ip)
# 检查ping测试结果
if echo "$ping_result" | grep -q "100% packet loss"; then
echo "Ping测试失败:目标IP地址不可达。"
else
# 提取ping延迟信息
ping_delay=$(echo "$ping_result" | tail -1 | awk -F '/' '{print $5}')
# 运行curl测试
curl_result=$(curl -s -m $curl_timeout -w "%{speed_download}\n" "http://$target_ip/")
# 检查curl测试结果
if [ -z "$curl_result" ]; then
echo "Curl测试失败:无法访问目标IP地址。"
else
# 提取curl带宽信息
curl_speed=$(echo "$curl_result" | tail -1)
# 输出测试结果
echo "Ping测试成功,延迟为$ping_delay ms。"
echo "Curl测试成功,带宽为$curl_speed B/s。"
fi
fi
应用监控
该脚本可以用于监控应用程序的运行状态、响应时间、内存使用等指标,以保证应用程序的稳定性和性能。该脚本可以使用curl、ab、ps等命令获取应用程序的状态和信息。
#!/bin/bash
# 目标HTTP服务的URL
url="http://example.com/"
# 测试次数
n=10
# 循环测试
for ((i=1; i<=n; i++))
do
# 获取当前时间戳
start=$(date +%s.%N)
# 发送HTTP请求并获取响应状态码
response=$(curl -sL -w "%{http_code}" "$url" -o /dev/null)
# 获取响应时间
end=$(date +%s.%N)
elapsed=$(echo "$end - $start" | bc)
# 输出测试结果
echo "[$(date)] Response code: $response, Elapsed time: $elapsed seconds"
# 等待1秒后再次测试
sleep 1
done
在这个示例中,首先定义了目标HTTP服务的URL和测试次数。然后使用for循环发送HTTP请求,并使用curl命令获取响应状态码和响应时间。最后输出测试结果,并使用sleep命令等待1秒后再次测试。
您可以根据需要修改示例中的URL、测试次数、命令参数等,以适应您的实际需求。例如,可以添加监控内存使用的命令、使用其他监控工具等。
搜索替换
该脚本可以用于在指定目录下搜索指定的关键字,并将其替换为新的内容。可以使用grep命令查找目标文件,使用sed命令进行替换。
#!/bin/bash
# 指定要搜索的目录
dir="/home/user/project"
# 指定要搜索的关键字和替换内容
search="old_string"
replace="new_string"
# 在指定目录下搜索关键字,并将其替换为新内容
find "$dir" -type f -exec sed -i "s/$search/$replace/g" {} +
文件压缩
该脚本可以用于将指定目录下的文件进行压缩,以节省磁盘空间。可以使用tar命令进行文件压缩和归档。
#!/bin/bash
# 指定要压缩的目录
dir="/home/user/project"
# 指定要压缩的文件名
filename="backup_$(date +%Y-%m-%d_%H%M%S).tar.gz"
# 压缩目录并保存为指定的文件名
tar -czvf "$filename" "$dir"