那些简单却超实用的Shell脚本

Shell 脚本是一种运行在 Unix/Linux 操作系统上的脚本语言,其主要用途是自动化任务、管理系统、数据处理等。Shell 脚本具有简单、灵活、易于使用等特点,深受系统管理员、开发人员和数据分析人员的喜爱。

在之前的文章《Linux服务器防SSH暴力登录脚本》《nginx/mysqld服务异常停止自动重启shell脚本》中,我们介绍了如何利用Shell脚本来提高服务器的安全性和稳定性,本文我们将继续介绍一些实用的Shell脚本以帮助我们提高工作效率、简化操作、节省时间和精力。

一、批量更改文件后缀名

#! /usr/bin/env sh

for i in $(find . -name "*.$1")
do
  name=$(echo $i | awk -F".$1" '{print $1;}');
  mv $i $name.$2;
done

将上面的内容保存为rename.sh并放置到需要重命名的文件夹中,通过chmod +x rename.sh赋予脚本执行权限,然后执行脚本:

./rename.sh jpg png

通过上面的命令我们可以将当前文件夹下所有的jpg后缀名的文件改成png后缀。

二、系统资源监控

#! /usr/bin/env bash

# 报警阙值
threshold=90
# 报警接收邮箱
admin_mail=admin@example.com

cpu_usage=$(top -b -n 1 | grep "Cpu(s)" | awk '{print $2+$4}')
mem_usage=$(free -m | awk 'NR==2 {print $3/$2*100}')
dsk_usage=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')

# CPU使用率报警
if [ `echo "$cpu_usage >= $threshold" | bc` -eq 1 ]; then
    echo "警报!服务器CPU使用率过高,当前: $cpu_usage, 时间: `date +"%Y-%m-%d %H:%M:%S"`" | mail -s "系统资源警报" $admin_mail;
fi

# 内存使用率报警
if [ `echo "$mem_usage >= $threshold" | bc` -eq 1 ]; then
    echo "警报!服务器内存使用率过高,当前: $mem_usage 时间: `date +"%Y-%m-%d %H:%M:%S"`" | mail -s "系统资源警报" $admin_mail;
fi

# 硬盘使用率报警
if [ `echo "$dsk_usage >= $threshold" | bc` -eq 1 ]; then
    echo "警报!服务器硬盘使用率过高,当前: $dsk_usage 时间: `date +"%Y-%m-%d %H:%M:%S"`" | mail -s "系统资源警报" $admin_mail;
fi

该脚本可以监控服务器CPU、内存、磁盘等资源的使用情况,并在资源使用率达到预设阈值时发送警报邮件。将上面的内容保存为res_monitor.sh并放置到一个不会被误删的目录中比如建立专门用于存储脚本的shell目录,通过chmod +x res_monitor.sh赋予脚本执行权限,并设置定时任务,每5分钟执行一次。

*/5 * * * * ./res_monitor.sh

三、网站可用性检测监控

#! /usr/bin/env bash

# 指定需要监控的网站
site_to_monitor=/
# 报警接收邮箱
admin_mail=admin@example.com

status=$(curl -s -o /dev/null -w '%{http_code}' $site_to_monitor)
if [ $status -ne 200 ]; then
    echo "警报!网站:$site_to_monitor 当前不可用,状态码:$status, 时间: `date +"%Y-%m-%d %H:%M:%S"`" | mail -s "网站可用性警报" $admin_mail;
fi

将上面的内容保存为web_monitor.sh并放置到一个不会被误删的目录中比如建立专门用于存储脚本的shell目录,通过chmod +x web_monitor.sh赋予脚本执行权限,并设置定时任务,每3分钟执行一次。

*/3 * * * * ./web_monitor.sh

四、自动数据库备份

#! /usr/bin/env bash

db_name=my_database
db_user=user
db_pass=pass
backup_dir=/backup/directory

# 初始创建备份目录
mkdir -p $backup_dir

# 备份数据库
mysqldump -u$db_user -p$db_pass $db_name > "$backup_dir/${db_name}_`date +"%Y-%m-%d"`.sql"

将上面的内容保存为db_backup.sh并放置到一个不会被误删的目录中比如建立专门用于存储脚本的shell目录,通过chmod +x db_backup.sh赋予脚本执行权限,并设置定时任务,每天凌晨1点钟执行。

0 1 * * * ./db_backup.sh

五、自动清理文件

#! /usr/bin/env bash

# 指定清理目录
dir_to_clean=/path/directory

# 清理目录中所有文件
rm -rf $dir_to_clean/*

将上面的内容保存为dir_clean.sh并放置到一个不会被误删的目录中比如建立专门用于存储脚本的shell目录,通过chmod +x dir_clean.sh赋予脚本执行权限,并设置定时任务,每天凌晨1点钟执行。

0 1 * * * ./dir_clean.sh

六、结语

Shell脚本是一种非常实用的工具,可以帮助我们自动执行重复的任务,提高工作效率。无论是对于初学者还是经验丰富的管理员来说,掌握Shell脚本都是非常重要的。希望本文能够对您学习Shell脚本提供一些帮助。

  • 支付宝二维码 支付宝
  • 微信二维码 微信

本文地址: /usefull-shell-scripts.html

版权声明: 本文为原创文章,版权归 逐梦个人博客 所有,欢迎分享本文,转载请保留出处!

相关文章