Shell脚本是Linux/Unix系统中强大的自动化工具,可以简化重复性任务、批量处理文件、定时执行操作等。下面我将详细介绍如何使用Shell脚本实现任务自动化。
#!/bin/bash
# 这是一个简单的Shell脚本示例
echo "Hello, World!"
#!/bin/bash
称为shebang,指定解释器#
开头的行是注释echo
用于输出文本# 给脚本添加执行权限
chmod +x script.sh
# 运行脚本
./script.sh
#!/bin/bash
# 批量重命名文件
for file in *.txt; do
mv "$file" "${file%.txt}.bak"
done
# 批量压缩日志文件
find /var/log -name "*.log" -type f -mtime +7 -exec gzip {} \;
#!/bin/bash
# 监控磁盘空间
DISK_USAGE=$(df -h | grep '/dev/sda1' | awk '{print $5}' | cut -d'%' -f1)
if [ $DISK_USAGE -gt 90 ]; then
echo "警告:磁盘空间不足!使用率: $DISK_USAGE%" | mail -s "磁盘警报" admin@example.com
fi
# 自动清理临时文件
find /tmp -type f -mtime +30 -delete
#!/bin/bash
# 数据库备份
BACKUP_DIR="/backups"
DATE=$(date +%Y%m%d)
mysqldump -u root -p'password' mydatabase > $BACKUP_DIR/mydatabase_$DATE.sql
gzip $BACKUP_DIR/mydatabase_$DATE.sql
# 保留最近7天的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
#!/bin/bash
# 检查网站可用性
URL="https://example.com"
if curl --output /dev/null --silent --head --fail "$URL"; then
echo "$URL 可以访问"
else
echo "$URL 无法访问" | mail -s "网站宕机警报" admin@example.com
fi
#!/bin/bash
# 定义日志函数
log() {
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $1" >> /var/log/automation.log
}
# 定义备份函数
backup_files() {
local src=$1
local dest=$2
rsync -avz "$src" "$dest"
log "完成备份: $src 到 $dest"
}
# 调用函数
backup_files "/var/www" "/backups/www"
#!/bin/bash
# 设置错误时退出
set -e
# 或者捕获错误
command_that_might_fail || {
echo "命令执行失败"
exit 1
}
# 检查命令是否存在
if ! command -v git &> /dev/null; then
echo "git未安装,正在安装..."
apt-get install -y git
fi
#!/bin/bash
# 处理命令行参数
while getopts ":u:p:" opt; do
case $opt in
u) username="$OPTARG" ;;
p) password="$OPTARG" ;;
\?) echo "无效选项: -$OPTARG" >&2; exit 1 ;;
:) echo "选项 -$OPTARG 需要参数" >&2; exit 1 ;;
esac
done
echo "用户名: $username"
echo "密码: $password"
使用cron定时执行脚本:
crontab -e
# 每天凌晨3点执行备份脚本
0 3 * * * /path/to/backup.sh
# 每5分钟检查一次服务状态
*/5 * * * * /path/to/check_service.sh
- * * * * *
- 每分钟
- 0 * * * *
- 每小时
- 0 0 * * *
- 每天午夜
- 0 0 * * 0
- 每周日午夜
- 0 0 1 * *
- 每月1日午夜
通过合理使用Shell脚本,可以大幅提高系统管理效率,减少重复劳动和人为错误。