概述今天主要分享5个shell脚本实例。大家可以借鉴一下里面的思路,看看有没有其他的实现方式。1、定时清空文件内容,定时记录文件大小#################################################################################执行脚本(任务计划)每隔一小时,当时间为0:00或12:00时,此时将清除目标目录下所有文件的内容,但不会删除文件。其他时候,只会统计每个文件的大小,每行一个文件,输出到以时间#time和date命名的文件。目标需要考虑目录下二级、三级等子目录下的文件#######################################################################logfile=/tmp/`date+%H-%F`。logn=`date+%H`if[$n-eq00]||[$n-eq12]then#通过for循环,以find命令为遍历条件,遍历目标目录下的所有文件,并进行相应的操作foriin`find/data/log/-typef`dotrue>$idoneelseforin`find/data/log/-typef`dodu-sh$i>>$logfiledonefi2,计算文档每一行出现的数字个数,并计算整个文档的数字总数#!/bin/bash############################################################计算文档每一行出现的数字个数,计算整个文档中数字的总数文档#############################################################使用awk只输出文档行数(截取第一段aph)n=`wc-la.txt|awk'{print$1}'`sum=0#文件每一行可能有空格,不能直接用文件内容遍历`sed-n"$i"pa.txt`#wc-L选项,统计最长行的长度n_n=`echo$line|seds'/[^0-9]//'g|wc-L`echo$n_nsum=$[$sum+$n_n]doneecho"求和:$sum"3.检测两台服务器指定目录下文件的一致性#!/bin/bash#######################################检测两台服务器指定目录下文件的一致性##########################################通过比较两台服务器上文件的md5值,目的检测一致性的实现dir=/data/webb_ip=192.168.88.10#遍历指定目录下的所有文件,作为md5sum命令的参数,获取所有文件的md5值,写入指定文件find$dir-typef|xargsmd5sum>/tmp/md5_a.txtssh$b_ip"find$dir-typef|xargsmd5sum>/tmp/md5_b.txt"scp$b_ip:/tmp/md5_b.txt/tmp#比较文件名为遍历对象一一forfin`awk'{print2}/tmp/md5_a.txt'`do#以机器a为标准,当机器b中的文件在遍历对象中不存在时,直接输出不存在的结果ifgrep-qw"$f"/tmp/md5_b.txtthenmd5_a=`grep-w"$f"/tmp/md5_a.txt|awk'{print1}'`md5_b=`grep-w"$f"/tmp/md5_b.txt|awk'{print1}'`#当文件存在时,如果md5值为inco坚持,输出文件变化的结果if[$md5_a!=$md5_b]thenecho"$fchanged."fielseecho"$fdeleted."fidone4.检测网卡流量,按照指定格式记录在日志中#!/bin/bash############################################################检测网卡流量并按照指定格式记录在日志中#一分钟记录一次#日志格式如下:#2019-08-1220:40#ens33input:1234bps#ens33output:1235bps########################################################3while:do#设置语言为英文,保证输出的是英文,否则bu会出现gLANG=enlogfile=/tmp/`date+%d`.log#将下面执行命令的输出重定向到logfilelogexec>>$logfiledate+"%F%H:%M"#sar命令统计的流量单位为kb/s,日志格式为bps,所以*1000*8sar-nDEV159|grepAverage|grepens33|awk'{print$2,"\t","input:","\t",$5*1000*8,"bps","\n",$2,"\t","输出:","\t",$6*1000*8,"bps"}'echo"#####################"#因为执行sar命令需要59秒,所以不需要sleepdone输出:5.killallscripts#!/bin/bash##################################################################在cron中添加了一些脚本,出现脚本没有运行完需要执行新任务的情况,#导致系统负载增加,所以可以过滤把影响负载的进程全部杀掉,写脚本##################################################################psaux|grep指定进程名|grep-vgrep|awk'{print$2}'|xargskill-9
