Linux脚本实战,超详细的5个Shell脚本实例分享(值得收藏)

概述

今天主要分享5个shell脚本实例,大家可以借鉴下里面的思路,看下有没另外一种实现方式。

1、定时清空文件内容,定时记录文件大小

#!/bin/bash

################################################################

#每小时执行一次脚本(任务计划),当时间为0点或12点时,将目标目录下的所有文件内

#容清空,但不删除文件,其他时间则只统计各个文件的打小,一个文件一行,输出到以时#间和日期命名的文件中,需要考虑目标目录下二级、三级等子目录的文件

################################################################

logfile=/tmp/`date +%H-%F`.log

n=`date +%H`

if [ $n -eq 00 ] || [ $n -eq 12 ]

then

#通过for循环,以find命令作为遍历条件,将目标目录下的所有文件进行遍历并做相应操作

for i in `find /data/log/ -type f`

do

true > $i

done

else

for i in `find /data/log/ -type f`

do

du -sh $i >> $logfile

done

fi

842e2af84eba35acfc6afb77e98e9533.png

2、计算文档每行出现的数字个数,并计算整个文档的数字总数

#!/bin/bash

#########################################################

#计算文档每行出现的数字个数,并计算整个文档的数字总数

########################################################

#使用awk只输出文档行数(截取第一段)

n=`wc -l a.txt|awk '{print $1}'`

sum=0

#文档中每一行可能存在空格,因此不能直接用文档内容进行遍历

for i in `seq 1 $n`

do

#输出的行用变量表示时,需要用双引号

line=`sed -n "$i"p a.txt`

#wc -L选项,统计最长行的长度

n_n=`echo $line|sed s'/[^0-9]//'g|wc -L`

echo $n_n

sum=$[$sum+$n_n]

done

echo "sum:$sum"

c8f86f28fc1dc5fcdf851be14ce47eb9.png

3e0d52193c4c5d12861c4e9d0d1c2ba7.png

3、检测两台服务器指定目录下的文件一致性

#!/bin/bash

#####################################

#检测两台服务器指定目录下的文件一致性

#####################################

#通过对比两台服务器上文件的md5值,达到检测一致性的目的

dir=/data/web

b_ip=192.168.88.10

#将指定目录下的文件全部遍历出来并作为md5sum命令的参数,进而得到所有文件的md5值,并写入到指定文件中

find $dir -type f|xargs md5sum > /tmp/md5_a.txt

ssh $b_ip "find $dir -type f|xargs md5sum > /tmp/md5_b.txt"

scp $b_ip:/tmp/md5_b.txt /tmp

#将文件名作为遍历对象进行一一比对

for f in `awk '{print 2} /tmp/md5_a.txt'`

do

#以a机器为标准,当b机器不存在遍历对象中的文件时直接输出不存在的结果

if grep -qw "$f" /tmp/md5_b.txt

then

md5_a=`grep -w "$f" /tmp/md5_a.txt|awk '{print 1}'`

md5_b=`grep -w "$f" /tmp/md5_b.txt|awk '{print 1}'`

#当文件存在时,如果md5值不一致则输出文件改变的结果

if [ $md5_a != $md5_b ]

then

echo "$f changed."

fi

else

echo "$f deleted."

fi

done

2440c9a8dc664f1166c6c5c147a49721.png

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

#!/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

e3ace82a085b7df0dd0cc2aebde7fdd1.png

输出结果:

47fd48641ad717c6d2acd981fbbe554d.png

5、杀死所有脚本

#!/bin/bash

################################################################

#有一些脚本加入到了cron之中,存在脚本尚未运行完毕又有新任务需要执行的情况,

#导致系统负载升高,因此可通过编写脚本,筛选出影响负载的进程一次性全部杀死。

################################################################

ps aux|grep 指定进程名|grep -v grep|awk '{print $2}'|xargs kill -9

5fcafe3f43acbb10163c8c7807543533.png

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值