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


Posted in Javascript onAugust 15, 2019

概述

今天主要分享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

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

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"

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

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

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

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

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

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

输出结果:

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

5、杀死所有脚本

#!/bin/bash 
################################################################ 
#有一些脚本加入到了cron之中,存在脚本尚未运行完毕又有新任务需要执行的情况, 
#导致系统负载升高,因此可通过编写脚本,筛选出影响负载的进程一次性全部杀死。 
################################################################ 
ps aux|grep 指定进程名|grep -v grep|awk '{print $2}'|xargs kill -9

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

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

Javascript 相关文章推荐
javascript判断单选框或复选框是否选中方法集锦
Apr 04 Javascript
JS和JQUERY获取页面大小,滚动条位置,元素位置(示例代码)
Dec 14 Javascript
js window.onload 加载多个函数和追加函数详解
Jan 08 Javascript
JavaScript中判断整数的多种方法总结
Nov 08 Javascript
js实现文字在按钮上滚动的方法
Aug 20 Javascript
深入理解jQuery之防止冒泡事件
May 24 Javascript
用JS动态改变表单form里的action值属性的两种方法
May 25 Javascript
微信小程序中实现手指缩放图片的示例代码
Mar 13 Javascript
vue如何引入sass全局变量
Jun 28 Javascript
vue-router beforeEach跳转路由验证用户登录状态
Dec 26 Javascript
vue spa应用中的路由缓存问题与解决方案
May 31 Javascript
用JavaScript实现贪吃蛇游戏
Oct 23 Javascript
koa2+vue实现登陆及登录状态判断
Aug 15 #Javascript
原生js实现的移动端可拖动进度条插件功能详解
Aug 15 #Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 #Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 #Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
Aug 15 #Javascript
js设计模式之单例模式原理与用法详解
Aug 15 #Javascript
js设计模式之代理模式及订阅发布模式实例详解
Aug 15 #Javascript
You might like
探讨如何在PHP开启gzip页面压缩实例
2013/06/09 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
2015/12/07 PHP
php微信开发之上传临时素材
2016/06/24 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
Script标签与访问HTML页面详解
2014/01/10 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
nodejs中转换URL字符串与查询字符串详解
2014/11/26 NodeJs
javascript简单实现滑动菜单效果的方法
2015/07/27 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
jQuery的each循环用法简单示例
2016/06/12 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
20170918 前端开发周报之JS前端开发必看
2017/09/18 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
微信小程序 如何引入外部字体库iconfont的图标
2018/01/31 Javascript
JavaScript实现创建自定义对象的常用方式总结
2018/07/09 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
[01:06:18]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第二场 1月26日
2021/03/11 DOTA
python计算程序开始到程序结束的运行时间和程序运行的CPU时间
2013/11/28 Python
python如何让类支持比较运算
2018/03/20 Python
python中正则表达式 re.findall 用法
2018/10/23 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
python安装及变量名介绍详解
2020/12/12 Python
python通用数据库操作工具 pydbclib的使用简介
2020/12/21 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
中秋节国旗下演讲稿
2014/09/13 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
文明倡议书
2015/01/19 职场文书
golang中的空接口使用详解
2021/03/30 Python
python 标准库原理与用法详解之os.path篇
2021/10/24 Python