📅  最后修改于: 2023-12-03 14:59:30.413000             🧑  作者: Mango
Bash是Unix系统中的一种命令解释器,其可执行脚本文件的文件名后缀为.sh
。Bash脚本可用于自动化系统管理、任务调度等一系列操作。下面是一些Bash案例声明,带您领略Bash在实际开发中的应用。
该脚本用于自动备份指定目录下的文件到指定的备份目录中,并且保留最近7天的备份,其他备份自动删除。示例代码如下:
#!/bin/bash
BACKUP_DIR="/var/backup/mysql/"
SOURCE_DIR="/var/lib/mysql/"
EXCLUDE_LIST="/root/exclude-list.txt"
# Create backup directory if it does not exist
mkdir -p $BACKUP_DIR
# Remove old backups
find $BACKUP_DIR -type f -mtime +7 -exec rm -f {} \;
# Backup files
rsync -a --delete \
--exclude-from="$EXCLUDE_LIST" \
$SOURCE_DIR $BACKUP_DIR
该脚本将MySQL数据库的数据目录/var/lib/mysql/
备份到/var/backup/mysql/
目录下,排除/root/exclude-list.txt
中指定的文件或目录,保留最近7天的备份,其他备份自动删除。
该脚本用于监控指定目录下的文件变化并进行相应的操作,如打印变化的文件名、发送邮件等。示例代码如下:
#!/bin/bash
WATCH_DIR="/root/watch/"
MAIL_TO="admin@example.com"
inotifywait -m -r -e modify,create,delete $WATCH_DIR |
while read file; do
echo "File changed: $file"
echo "Sending email to $MAIL_TO"
echo "File changed on $(date)" | mail -s "File changed" $MAIL_TO
done
该脚本使用inotifywait
命令监控/root/watch/
目录下的文件变化,并在文件变化时打印文件名、发送邮件通知。
该脚本用于对指定日志文件进行分析,如查找出现频率最高的IP、统计请求次数等。示例代码如下:
#!/bin/bash
LOG_FILE="/var/log/nginx/access.log"
# Top IPs by request count
awk '{print $1}' $LOG_FILE | sort | uniq -c | sort -nr | head -n 10
# Top URLs by request count
awk '{print $7}' $LOG_FILE | sort | uniq -c | sort -nr | head -n 10
# 404 errors
grep '" 404 ' $LOG_FILE
该脚本使用awk
命令对Nginx的访问日志/var/log/nginx/access.log
进行分析,输出出现频率最高的IP、访问URL和404错误。
该脚本用于监控系统资源使用情况,如CPU、内存、网络等。示例代码如下:
#!/bin/bash
while true; do
CPU=$(top -bn1 | grep '^%Cpu' | awk '{print $2+$4}')
MEM=$(free | awk '/Mem/{printf("%.2f"), $3/$2 * 100.0}')
NET=$(ifstat -i eth0 -qT 1 1 | tail -n 1 | awk '{print $1 "," $2}')
echo "$(date +%F\ %T),CPU:$CPU,Memory:%$MEM,Network:in/out=$NET KB/s"
done
该脚本使用top
命令监控CPU使用率,free
命令监控内存使用率,ifstat
命令监控网络带宽使用情况,并每秒输出一次监控结果。
Bash在实际开发中十分常用,可以方便地实现系统管理、任务调度、数据处理等多种操作。以上案例仅为Bash可能的应用范例,欢迎程序员们探索更多用途。