Shell脚本是一种使用Shell编程语言编写的脚本文件,它能够帮助我们自动化执行各种系统任务,提高运维效率。掌握Shell脚本对于系统管理员和开发者来说至关重要。本文将结合实际运维场景,解析十大高效Shell脚本案例,帮助读者提升Shell脚本技能。
案例一:批量修改文件名
在日常运维工作中,我们经常需要批量修改文件名。以下是一个简单的Shell脚本示例,用于将指定目录下的所有文件名修改为“prefix_文件名”。
#!/bin/bash
prefix="prefix_"
for file in *
do
if [ -f "$file" ]; then
mv "$file" "${prefix}${file}"
fi
done
案例二:检查磁盘空间
磁盘空间不足是导致系统性能下降的常见原因。以下是一个Shell脚本示例,用于检查指定目录的磁盘空间使用情况。
#!/bin/bash
dir="/path/to/dir"
threshold=80
df -h "$dir" | awk '{print $5}' | grep -vE '^$' | while read usage
do
if [ $(echo $usage | awk '{print $1}' | cut -d'%' -f1) -ge $threshold ]; then
echo "警告:$dir 磁盘空间不足,使用率:$(echo $usage | awk '{print $1}')%"
fi
done
案例三:自动化备份
自动化备份是运维工作中不可或缺的一环。以下是一个简单的Shell脚本示例,用于将指定目录下的文件备份到远程服务器。
#!/bin/bash
src_dir="/path/to/src"
dest_server="user@server:/path/to/dest"
backup_file="backup_$(date +%Y%m%d%H%M%S).tar.gz"
tar -czf "$backup_file" -C "$src_dir" . && scp "$backup_file" "$dest_server"
案例四:监控系统日志
系统日志是了解系统运行状态的重要依据。以下是一个Shell脚本示例,用于实时监控系统日志文件。
#!/bin/bash
log_file="/var/log/syslog"
tail -F "$log_file"
案例五:自动化部署
自动化部署可以大大提高运维效率。以下是一个简单的Shell脚本示例,用于自动化部署Java应用程序。
#!/bin/bash
app_dir="/path/to/app"
jar_file="app.jar"
cd "$app_dir"
nohup java -jar "$jar_file" > app.log 2>&1 &
案例六:批量安装软件
批量安装软件可以节省大量时间。以下是一个Shell脚本示例,用于批量安装Linux系统软件。
#!/bin/bash
packages=("package1" "package2" "package3")
for package in "${packages[@]}"
do
sudo apt-get install -y "$package"
done
案例七:监控网络流量
网络流量监控是保障网络稳定运行的关键。以下是一个Shell脚本示例,用于监控指定网卡的实时流量。
#!/bin/bash
interface="eth0"
while true
do
rx_bytes=$(cat /sys/class/net/"$interface"/statistics/rx_bytes)
tx_bytes=$(cat /sys/class/net/"$interface"/statistics/tx_bytes)
echo "接收流量:$rx_bytes bytes,发送流量:$tx_bytes bytes"
sleep 1
done
案例八:自动化重启服务
自动化重启服务可以避免因服务异常导致系统不稳定。以下是一个Shell脚本示例,用于重启指定服务。
#!/bin/bash
service_name="nginx"
sudo systemctl restart "$service_name"
案例九:批量修改用户密码
批量修改用户密码可以方便管理用户账户。以下是一个Shell脚本示例,用于批量修改指定用户的密码。
#!/bin/bash
users=("user1" "user2" "user3")
new_password="newpassword"
for user in "${users[@]}"
do
echo "$user:$new_password" | sudo chpasswd
done
案例十:自动化构建和部署
自动化构建和部署可以大大提高开发效率。以下是一个Shell脚本示例,用于自动化构建和部署Java Web应用程序。
#!/bin/bash
project_dir="/path/to/project"
build_dir="$project_dir/target"
jar_file="app.jar"
cd "$project_dir"
mvn clean package
cd "$build_dir"
nohup java -jar "$jar_file" > app.log 2>&1 &
通过以上十大高效Shell脚本案例,相信读者对Shell脚本在运维领域的应用有了更深入的了解。在实际工作中,我们可以根据具体需求对脚本进行修改和优化,以提高运维效率。祝大家在Shell脚本领域取得更大的进步!
