Linux中常用的Shell脚本示例

当谈论一线运维工作中的常用 shell 脚本时,以下是一些实用的例子:
检查系统负载:编写一个脚本以检查系统的负载情况,并在超过阈值时发送警报。可使用 uptime 命令和条件语句来实现。
#!/bin/bashthreshold=1.0load=$(uptime | awk -f'[, ]+' '{print $(nf-2)}')if (( $(echo $load > $threshold | bc -l) )); then    echo 系统负载过高: $load | mail -s 系统负载警报 admin@example.comfi  
备份文件:编写一个脚本以定期备份指定目录的文件。可以使用 cp 命令和 cron 作业调度程序来完成。
#!/bin/bashbackup_dir=/path/to/backupsource_dir=/path/to/sourcetimestamp=$(date +%y%m%d%h%m%s)backup_file=backup_$timestamp.tar.gztar czf $backup_dir/$backup_file $source_dir  
清理日志文件:编写一个脚本以清理旧的日志文件,保留最近的一段时间内的文件。可以使用 find 命令和条件语句来实现。
#!/bin/bashlog_dir=/path/to/logsdays_to_keep=7find $log_dir -type f -name *.log -mtime +$days_to_keep -delete  
监控服务状态:编写一个脚本以监控关键服务的运行状态,并在服务异常时发送警报。可以使用 systemctl 命令和条件语句来实现。
#!/bin/bashservice_name=nginxif ! systemctl is-active --quiet $service_name; then    echo 服务 $service_name 未运行 | mail -s 服务状态警报 admin@example.comfi  
自动化部署:编写一个脚本以自动化部署应用程序或配置文件到多台服务器。可以使用 rsync 命令和循环结构来实现。
#!/bin/bashservers=(server1 server2 server3)source_dir=/path/to/sourcedestination_dir=/path/to/destinationfor server in ${servers[@]}; do    rsync -avz $source_dir $server:$destination_dirdone  
监控磁盘空间:编写一个脚本以监控系统磁盘空间使用情况,并在空间不足时发送警报。可以使用 df 命令和条件语句来实现。
#!/bin/bashthreshold=90df_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    fidone << /dev/null; then    echo 无法访问服务: $service_ip | mail -s 网络连通性警报 admin@example.comfi  
批量重命名文件:编写一个脚本以批量重命名目录中的文件。可以使用循环结构和 mv 命令来实现。
#!/bin/bashdirectory=/path/to/filesprefix=new_filecount=1for file in $directory/*; do    new_file_name=$directory/$prefix$count    mv $file $new_file_name    ((count++))done  
启动/停止服务:编写一个脚本以同时启动或停止多个服务。可以使用 systemctl 命令和循环结构来实现。
#!/bin/bashservices=(service1 service2 service3)action=start  # 或者 stopfor service in ${services[@]}; do    systemctl $action $servicedone  
这些例子只是一些常用的 shell 脚本示例,实际的运维工作中可能会有更多不同的需求。根据具体的情况,可以自行修改和扩展这些脚本。


中国人民银行正式开设了新的数字货币研究所
河长制污水浮标式在线监测
什么是数据科学家的最佳编程语言?
斯坦得LDI感光干膜及半导体光刻胶项目总投资15亿元
5G时代促成城市重塑
Linux中常用的Shell脚本示例
大家都在争相超过A100,无人对标的Grace Hopper性能几何?
自动驾驶聚焦双L4 道路信息化让自动驾驶更加安全
字节跳动也将入局机器人 机构预测明年行业规模超百亿美元
OPPO Reno2拥有超级视频防抖和视频变焦功能,影像功能全面升级
UCIe联盟热之下的思考,Chiplet技术本身更值得关注
LED连接器专用性很强 能保证传输信号的稳定性
各开发语言DNS缓存配置建议
华为与OPPO签订全球专利交叉许可协议
Arm推出PSA安全架构,为物联网互联设备保驾护航
IO模块在钢铁行业的应用:提高效率,降低能耗
【新专利介绍】一种可连接云控制平台的机械式水表
自己动手制作互动式LED炫光舞池
基于知识图谱的调用链分析精准化测试平台
新电池标准实施,低端产品何去何从