超詳細的5個Shell腳本實例分享(值得收藏)

概述

目前創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設、域名、網(wǎng)絡空間、網(wǎng)站托管維護、企業(yè)網(wǎng)站設計、保山網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

今天主要分享5個shell腳本實例,大家可以借鑒下里面的思路,看下有沒另外一種實現(xiàn)方式。

1、定時清空文件內(nèi)容,定時記錄文件大小

#!/bin/bash 
################################################################ 
#每小時執(zhí)行一次腳本(任務計劃),當時間為0點或12點時,將目標目錄下的所有文件內(nèi) 
#容清空,但不刪除文件,其他時間則只統(tǒng)計各個文件的打小,一個文件一行,輸出到以時#間和日期命名的文件中,需要考慮目標目錄下二級、三級等子目錄的文件 
################################################################ 
logfile=/tmp/`date +%H-%F`.log 
n=`date +%H` 
if [ $n -eq 00 ] || [ $n -eq 12 ] 
 then 
 #通過for循環(huán),以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、計算文檔每行出現(xiàn)的數(shù)字個數(shù),并計算整個文檔的數(shù)字總數(shù)

#!/bin/bash 
######################################################### 
#計算文檔每行出現(xiàn)的數(shù)字個數(shù),并計算整個文檔的數(shù)字總數(shù) 
######################################################## 
#使用awk只輸出文檔行數(shù)(截取第一段) 
n=`wc -l a.txt|awk '{print $1}'` 
sum=0 
#文檔中每一行可能存在空格,因此不能直接用文檔內(nèi)容進行遍歷 
for i in `seq 1 $n` 
do 
 #輸出的行用變量表示時,需要用雙引號 
 line=`sed -n "$i"p a.txt` 
 #wc -L選項,統(tǒng)計最長行的長度 
 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命令的參數(shù),進而得到所有文件的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、檢測網(wǎng)卡流量,并按規(guī)定格式記錄在日志中

#!/bin/bash 
####################################################### 
#檢測網(wǎng)卡流量,并按規(guī)定格式記錄在日志中 
#規(guī)定一分鐘記錄一次 
#日志格式如下所示: 
#2019-08-12 20:40 
#ens33 input: 1234bps 
#ens33 output: 1235bps 
######################################################3 
while : 
do 
 #設置語言為英文,保障輸出結果是英文,否則會出現(xiàn)bug 
 LANG=en 
 logfile=/tmp/`date +%d`.log 
 #將下面執(zhí)行的命令結果輸出重定向到logfile日志中 
 exec >> $logfile 
 date +"%F %H:%M" 
 #sar命令統(tǒng)計的流量單位為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 "####################" 
#因為執(zhí)行sar命令需要59秒,因此不需要sleep 
done 

超詳細的5個Shell腳本實例分享(值得收藏)

輸出結果:

超詳細的5個Shell腳本實例分享(值得收藏)

5、殺死所有腳本

#!/bin/bash 
################################################################ 
#有一些腳本加入到了cron之中,存在腳本尚未運行完畢又有新任務需要執(zhí)行的情況, 
#導致系統(tǒng)負載升高,因此可通過編寫腳本,篩選出影響負載的進程一次性全部殺死。 
################################################################ 
ps aux|grep 指定進程名|grep -v grep|awk '{print $2}'|xargs kill -9 

超詳細的5個Shell腳本實例分享(值得收藏)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

分享標題:超詳細的5個Shell腳本實例分享(值得收藏)
分享路徑:http://www.muchs.cn/article22/ipphcc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供服務器托管、虛擬主機、自適應網(wǎng)站、網(wǎng)站策劃、微信小程序Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站