Linux中10个一线工作中常用 Shell 脚本


快乐没烦恼
快乐没烦恼 2023-11-24 14:48:36 52523
分类专栏: 资讯
当谈论一线运维工作中的常用 Shell 脚本时,以下是一些实用的例子:
  1. 检查系统负载:编写一个脚本以检查系统的负载情况,并在超过阈值时发送警报。可使用 uptime 命令和条件语句来实现。
#!/bin/bash
threshold=1.0
load=$(uptime | awk -F'[, ]+' '{print $(NF-2)}')
if (( $(echo "$load > $threshold" | bc -l) )); then
    echo "系统负载过高: $load" | mail -s "系统负载警报" admin@example.com
fi
  1. 备份文件:编写一个脚本以定期备份指定目录的文件。可以使用 cp 命令和 cron 作业调度程序来完成。
#!/bin/bash
backup_dir="/path/to/backup"
source_dir="/path/to/source"
timestamp=$(date +%Y%m%d%H%M%S)
backup_file="backup_$timestamp.tar.gz"
tar czf "$backup_dir/$backup_file" "$source_dir"
  1. 清理日志文件:编写一个脚本以清理旧的日志文件,保留最近的一段时间内的文件。可以使用 find 命令和条件语句来实现。
#!/bin/bash
log_dir="/path/to/logs"
days_to_keep=7
find "$log_dir" -type f -name "*.log" -mtime +$days_to_keep -delete
  1. 监控服务状态:编写一个脚本以监控关键服务的运行状态,并在服务异常时发送警报。可以使用 systemctl 命令和条件语句来实现。
#!/bin/bash
service_name="nginx"
if ! systemctl is-active --quiet "$service_name"; then
    echo "服务 $service_name 未运行" | mail -s "服务状态警报" admin@example.com
fi
  1. 自动化部署:编写一个脚本以自动化部署应用程序或配置文件到多台服务器。可以使用 rsync 命令和循环结构来实现。
#!/bin/bash
servers=("server1" "server2" "server3")
source_dir="/path/to/source"
destination_dir="/path/to/destination"
for server in "${servers[@]}"; do
    rsync -avz "$source_dir" "$server:$destination_dir"
done
  1. 监控磁盘空间:编写一个脚本以监控系统磁盘空间使用情况,并在空间不足时发送警报。可以使用 df 命令和条件语句来实现。
#!/bin/bash
threshold=90
df_output=$(df -h)
while read -r line; do
    usage=$(echo "$line" | awk '{print $5}' | sed 's/%//')
    if (( usage > threshold )); then
        echo "磁盘空间不足: $line" | mail -s "磁盘空间警报" admin@example.com
    fi
done <<< "$df_output"
  1. 清理临时文件:编写一个脚本以定期清理临时目录中的过期文件。可以使用 find 命令和条件语句来实现。
#!/bin/bash
temp_dir="/path/to/temp"
expiration_days=3
find "$temp_dir" -type f -mtime +$expiration_days -delete
  1. 监控网络连通性:编写一个脚本以监控关键网络服务的连通性,并在服务不可访问时发送警报。可以使用 ping 命令和条件语句来实现。
#!/bin/bash
service_ip="192.168.0.1"
if ! ping -c 1 -W 1 "$service_ip" > /dev/null; then
    echo "无法访问服务: $service_ip" | mail -s "网络连通性警报" admin@example.com
fi
  1. 批量重命名文件:编写一个脚本以批量重命名目录中的文件。可以使用循环结构和 mv 命令来实现。
#!/bin/bash
directory="/path/to/files"
prefix="new_file"
count=1
for file in "$directory"/*; do
    new_file_name="$directory/$prefix$count"
    mv "$file" "$new_file_name"
    ((count++))
done
  1. 启动/停止服务:编写一个脚本以同时启动或停止多个服务。可以使用 systemctl 命令和循环结构来实现。
#!/bin/bash
services=("service1" "service2" "service3")
action="start"  # 或者 "stop"
for service in "${services[@]}"; do
    systemctl "$action" "$service"
done

这些例子只是一些常用的 Shell 脚本示例,实际的运维工作中可能会有更多不同的需求。根据具体的情况,可以自行修改和扩展这些脚本。

来自微信公众号:入门小站

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=28934
赞同 0
评论 0 条
快乐没烦恼L0
粉丝 0 发表 14 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2950
【软件正版化】软件正版化工作要点  2872
统信UOS试玩黑神话:悟空  2833
信刻光盘安全隔离与信息交换系统  2728
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1261
grub引导程序无法找到指定设备和分区  1226
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
点击报名 | 京东2025校招进校行程预告  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  158
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
如何玩转信创开放社区—从小白进阶到专家 15
信创开放社区邀请他人注册的具体步骤如下 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!