首页 > 系统相关 >工作常用sheLL脚本(掌握!!)

工作常用sheLL脚本(掌握!!)

时间:2023-08-21 10:36:26浏览次数:41  
标签:脚本 bin 常用 sheLL file 编写 path dir

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

原创 入门小站 入门小站 2023-08-20 19:01 发表于湖北 收录于合集#Linux815个
入门小站 分享运维技巧及10k+Stars的开源项目 275篇原创内容 公众号

【Linux250个常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。

当谈论一线运维工作中的常用 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 脚本示例,实际的运维工作中可能会有更多不同的需求。根据具体的情况,可以自行修改和扩展这些脚本。

总共整理CentOS,Ubuntu,Windows,MacOS,Debian,Fedora 最流行的50个开源软件的安装手册。加入星球免费更新。

加入星球,你将获得以下的资料

图片

如果想学习开源项目(安装,部署,调试,问题排查。不管是Linux,Windows服务器都可以。)

图片

【Linux250个常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。


入门小站 分享运维技巧及10k+Stars的开源项目 275篇原创内容 公众号

 

收录于合集 #Linux  815个 上一篇Shell分析日志文件高效命令,90%的人没用过! 阅读 1032 入门小站   ​      

标签:脚本,bin,常用,sheLL,file,编写,path,dir
From: https://www.cnblogs.com/cherishthepresent/p/17645323.html

相关文章

  • VS Code常用快捷键
    思维导航前言设置VSCode中的键盘快捷方式常用快捷键文件操作编辑操作导航、搜索和替换操作调试操作官方VSCode快捷键图前言对于开发者而言,熟悉快捷键的使用,能够起到事半功倍的作用,提高工作效率。以下是我整理的一份VSCode常用快捷键清单,希望能够帮助到你,欢迎在......
  • SpringBoot 测试实践 - 1:常用的工具
    我自己接触到的一些商业或是开源的基于SpringBoot项目,它们大部分是没有测试代码的,test文件夹只有脚手架初始化生成的那个测试类,跟不同的开发聊到这个话题,发现他们中的大部分没有写测试的习惯,或者是觉得写测试代码麻烦,主要还是依赖测试工程师做黑盒的测试。只做黑盒测试的话有一......
  • Linux(CentOS)运维脚本工具
     使用说明备份指定目录#备份指定目录文件到指定目录,备份文件名称为:备份目录最后一层目录+"_"+日期.tar.gz#第一个参数:backdir第二参数:备份文件保存目录第三个参数:备份目录/文件shscript.shbackdir/root//home查看CPU、磁盘、内存使用率shscript.shbaseinfo返回结果20......
  • shell脚本之语句(条件、循环)
    条件语句1、测试使用[]时要使用空格,注意格式 格式1:test条件表达式 格式2:[条件表达式]#注意空格 注意[]空格,否则会失败 测试是否成功使用$?返回值来判断 [操作符文件或目录] helptest ​ 操作符: -d:测试是否为目录(Directory) -e:测试目录或文件是否......
  • java脚本模拟服务器内存溢出实战&服务器部署java项目
    一、背景:使用javaspringboot,实现linux服务器内存溢出情况。二、方案1、打包成war包,可以直接将war包部署在tomcat容器里2、springboot,打包成jar包。打的jar包,内置了tomcat,所以在服务器上,直接启jar包就行,没有必要放在tomcat容器里部署,在启动jar包时,可以配置线程池等。这......
  • Linux常用命令_拷贝移动、打包压缩、文本编辑命令(cp、mv、tar、vim)
                ......
  • Linux常用命令_文件目录操作命令(mkdir、rm、rmdir)
       ......
  • Linux常用命令_文件命令操作命令(ls、cd、cat、more、tail)
          ......
  • shell 正则表达式
    限定符a*出现0次或者多次a+出现1次或者多次a?出现0次或者1次a{3}出现3次a{2,4}出现2~4次a{3,}出现3次或者多次或运算符(a|b)匹配a或者b(ab)|(cd)匹配ab或者cd字符类[abc]匹配a或者b或者c[a-c]同上[a-fA-F0-9]匹配小写+大写英文字符以及数字[^0-9]匹配......
  • java的常用工具类
    Java中有很多常用的工具类,这些工具类提供了各种功能和方法,可以简化开发过程并提高效率。以下是一些常用的Java工具类及其作用:1.java.lang.Math:提供了一系列数学计算相关的静态方法,如求绝对值、最大值、最小值、随机数等。2.java.util.Arrays:提供了一系列数组操作的静态方法,如......