首页 > 系统相关 >提升工作效率的秘密武器:常用Shell脚本详解

提升工作效率的秘密武器:常用Shell脚本详解

时间:2023-09-19 22:02:21浏览次数:30  
标签:Shell log MIN 秘密武器 MAX echo INT 详解 日志

提升工作效率的秘密武器:常用Shell脚本详解_php

检测网卡流量,并按规定格式记录在日志中

#!/bin/bash  
#######################################################  
#检测网卡流量,并按规定格式记录在日志中#规定一分钟记录一次  
#日志格式如下所示:  
#2019-08-12 20:40  
#ens33 input: 1234bps  
#ens33 output: 1235bps  
######################################################3  
while :  
do  
#设置语言为英文,保障输出结果是英文,否则会出现bug  
LANG=en  
logfile=/tmp/`date +%d`.log  
#将下面执行的命令结果输出重定向到logfile日志中  
exec >> $logfile  
date +"%F %H:%M"  
#sar命令统计的流量单位为kb/s,日志格式为bps,因此要*1000*8  
sar -n DEV 1 59|grep Average|grep ens33|awk '{print $2,"\t","input:","\t",$5*1000*8,"bps","\n",$2,"\t","output:","\t",$6*1000*8,"bps"}'  
echo "####################"  
#因为执行sar命令需要59秒,因此不需要sleep  
done  

从 FTP 服务器下载文件

#!/bin/bash  
if [ $# -ne 1 ]; then  
    echo "Usage: $0 filename"  
fi  
dir=$(dirname $1)  
file=$(basename $1)  
ftp -n -v << EOF   # -n 自动登录  
open 192.168.1.10  # ftp服务器  
user admin password  
binary   # 设置ftp传输模式为二进制,避免MD5值不同或.tar.gz压缩包格式错误  
cd $dir  
get "$file"  
EOF  

连续输入5个100以内的数字,统计和、最小和最大

#!/bin/bash  
COUNT=1  
SUM=0  
MIN=0  
MAX=100  
while [ $COUNT -le 5 ]; do  
    read -p "请输入1-10个整数:" INT      
    if [[ ! $INT =~ ^[0-9]+$ ]]; then  
        echo "输入必须是整数!"  
        exit 1  
    elif [[ $INT -gt 100 ]]; then  
        echo "输入必须是100以内!"  
        exit 1  
    fi  
    SUM=$(($SUM+$INT))  
    [ $MIN -lt $INT ] && MIN=$INT  
    [ $MAX -gt $INT ] && MAX=$INT  
    let COUNT++  
    done  
echo "SUM: $SUM"  
echo "MIN: $MIN"  
echo "MAX: $MAX  

监测 Nginx 访问日志 502 情况,并做相应动作

#场景:  
#1.访问日志文件的路径:/data/log/access.log  
#2.脚本死循环,每10秒检测一次,10秒的日志条数为300条,出现502的比例不低于10%(30条)则需要重启php-fpm服务  
#3.重启命令为:/etc/init.d/php-fpm restart  
#!/bin/bash  
###########################################################  
#监测Nginx访问日志502情况,并做相应动作  
###########################################################  
log=/data/log/access.log  
N=30 #设定阈值  
while :do  
 #查看访问日志的最新300条,并统计502的次数  
    err=`tail -n 300 $log |grep -c '502" '`   
if [ $err -ge $N ]   
then  
/etc/init.d/php-fpm restart 2> /dev/null   
#设定60s延迟防止脚本bug导致无限重启php-fpm服务  
     sleep 60  
 fi  
 sleep 10  
 done  

标签:Shell,log,MIN,秘密武器,MAX,echo,INT,详解,日志
From: https://blog.51cto.com/u_15801829/7529749

相关文章

  • InnoDB锁详解(共享/排他锁、意向锁、记录锁、间隙锁、临键锁、插入意向锁、自增锁)
    原文地址:两万字详解InnoDB的锁-掘金(juejin.cn)1.为什么需要加锁?为什么需要加锁呢?在日常生活中,如果你心情不好想静静,不想被比别人打扰,你就可以把自己关进房间里,并且反锁。同理,对于MySQL数据库来说的话,一般的对象都是一个事务一个事务来说的。所以,如果一个事务内,正在写某......
  • RCC时钟详解
    目录一.STM32时钟树1.这里主要熟悉SYSCLK的时钟流程即可.(主要是配置好锁相环)二.核心寄存器分析1.RCC_CR时钟控制寄存器2.RCC_CFGR时钟配置寄存器3.其他寄存器三.RCC外设驱动1.操作寄存器方式驱动1.固件库方式驱动四.RCC外设驱动总结一.STM32时钟树1.这里主要熟悉SYSCL......
  • Eclipse Java注释模板设置详解
    设置注释模板的入口:Window->Preference->Java->CodeStyle->CodeTemplate然后展开Comments节点就是所有需设置注释的元素啦。现就每一个元素逐一介绍:文件(Files)注释标签:/***@Title:${file_name}*@Package${package_name}*@Description:${todo}(用一句话描......
  • 详解Spring缓存注解@Cacheable、@CachePut和@CacheEvict
    详解Spring缓存注解@Cacheable、@CachePut和@CacheEvict的使用简介在大型的应用程序中,缓存是一项关键技术,用于提高系统的性能和响应速度。Spring框架提供了强大的缓存功能,通过使用缓存注解可以轻松地集成缓存机制到应用程序中。本文将详细介绍Spring框架中的@Cacheable、@CachePu......
  • 详解RAID6种磁盘阵列模式
    所谓RAID就是RedundantArrayofIndependentDisk的缩写,中文意思是“独立冗余磁盘阵列”,简单来说就是一种利用多个硬盘来提高系统对磁盘的读写速度及其数据安全系数的一种技术。RAID技术开始一般用于服务器或大型工作站上面,但随着RAID技术的不断成熟,现在不少的家用PC的主板都内置......
  • React hooks详解
    importReact,{useEffect,useState}from'react';hook是react16.8的新增特性,他可以让你不在编写class的情况下shiystate以及react的特性Hooks的出现,首先解决了以下问题:告别了令人疑惑的生命周期告别类组件中烦人的this告别繁重的类组件,回归到了熟悉的函数组件reac......
  • [转]C#Invoke和BeginInvoke应用详解
    最近,在研究Invoke的使用,但是真的是一头雾水,网上看了很多资料,感觉还是看不懂,因为对于入门级的小白,想像不出Invoke的应用场景,更谈不上如何用了?1、Invoke到底是什么?Invoke的本质只是一个方法,方法一定是要通过对象来调用的。一般来说,Invoke其实用法只有两种情况:Control的Invoke......
  • 【MyAndroid】AndroidManifest.xml合并规则详解和注意事项
    APK或AndroidAppBundle文件只能包含一个AndroidManifest.xml文件,但AndroidStudio项目可以包含多个清单文件,这些清单文件由主源代码集、build变体和导入的库提供。因此,在构建应用时,Gradle构建系统会将所有清单文件合并成一个清单文件打包到应用中。清单合并工具遵循某些......
  • ipmitool 参数详解和常用命令列举
    ipmitool是一种可用在linux系统下的ipmi平台管理工具,它支持ipmi1.5规范(最新的规范为ipmi2.0),通过它可以实现获取传感器的信息、显示系统日志内容、网络远程开关机等功能。 [root@localhost~]#ipmitool-hipmitoolversion1.8.18usage:ipmitool[options...]<co......
  • SQL update select结合语句详解及应用
    SQLupdateselect结合语句详解及应用 QLupdateselect语句最常用的update语法是:12UPDATETABLE_NAMESETcolumn_name1=VALUEWHRERcolumn_name2=VALUE如果我的更新值Value是从一条select语句拿出来,而且有很多列的话,用这种语法就很麻烦第一,要sel......