目录
一、背景
Shell脚本是用于在Unix/Linux系统上自动化任务的强大工具。它们可以用来进行文件操作、系统监控、软件部署、任务调度等。
二、常见应用场景及示例
2.1、文件和目录操作
示例:批量重命名文件
#!/bin/bash
# 批量重命名当前目录下所有的 .txt 文件,添加前缀 "old_"
for file in *.txt; do
mv "$file" "old_$file"
done
2.2、 系统监控和日志管理
示例:定期检查磁盘使用情况并记录日志
#!/bin/bash
# 每天记录磁盘使用情况到 /var/log/disk_usage.log
logfile="/var/log/disk_usage.log"
date >> $logfile
df -h >> $logfile
echo "------" >> $logfile
2.3、 自动化备份
示例:备份重要目录到指定位置
#!/bin/bash
# 备份 /home/user 目录到 /backup 目录
src="/home/user"
dest="/backup/user_backup_$(date +%Y%m%d).tar.gz"
tar -czf $dest $src
echo "Backup completed: $dest"
2.4、网络任务自动化
示例:检查服务器是否在线
#!/bin/bash
# 检查多个服务器是否在线
servers=("192.168.1.1" "192.168.1.2" "192.168.1.3")
for server in "${servers[@]}"; do
if ping -c 1 $server &> /dev/null; then
echo "Server $server is online."
else
echo "Server $server is offline."
fi
done
2.5. 定时任务和任务调度
示例:每日定时执行脚本
# 使用cron调度每日执行的脚本
# 编辑crontab文件:crontab -e
# 每天凌晨2点执行 /home/user/backup.sh 脚本
0 2 * * * /home/user/backup.sh
2.6、软件部署和更新
示例:自动更新软件包
#!/bin/bash
# 使用 apt-get 自动更新所有软件包
sudo apt-get update
sudo apt-get upgrade -y
echo "System update completed."
2.7、数据处理和分析
示例:统计文件中的单词频率
#!/bin/bash
# 统计给定文本文件中的单词频率
if [ $# -eq 0 ]; then
echo "Usage: $0 filename"
exit 1
fi
filename=$1
tr -c '[:alnum:]' '[\n*]' < $filename | grep -v '^$' | sort | uniq -c | sort -nr
2.8、用户管理
示例:批量创建用户
#!/bin/bash
# 从列表中批量创建用户
userlist="user1 user2 user3"
for user in $userlist; do
sudo useradd $user
echo "User $user created."
done
三、总结
Shell脚本在不同场景中的应用。根据具体需求,脚本可以变得更加复杂和功能强大。Shell脚本是系统管理员和开发者日常工作中不可或缺的工具。