Linux腳本學習必經之路---shell腳本實例分享

概述

寫shell腳本還是一樣,思路第一,語法其次,下面分享幾個腳本實例,大家主要是理解一下里面的思路,語法稍微注意一下。


1、觀察數字,輸出包含前6個數字在內的16個數字

觀察以下數字,看有什麼規律:

10 31 53 77 105 141

這裡數字的規律在於兩個數字的差值的差值是2的冪次方

那麼怎麼用shell腳本實現需求呢?

#!/bin/bash
###############################################
#10 31 53 77 105 141
#觀察數字,輸出包含前6個數字在內的16個數字
#數字的規律在於兩個數字的差值的差值是2的冪次方
###############################################
a=10
b=21
echo $a
for i in `seq 0 13`
do
#2的$i次冪
\tc=$[2**$i]
a=$[$a+$b]
b=$[$b+$c]
echo $a
done
a=$[$a+$b]
echo $a
Linux腳本學習必經之路---shell腳本實例分享

輸出結果:

Linux腳本學習必經之路---shell腳本實例分享


2、查看Linux系統中是否存在自定義用戶,並統計自定義用戶數量

#!/bin/bash
##########################################################
#查看Linux系統中是否存在自定義用戶,並統計自定義用戶數量
#截取/etc/passwd文件中第三段的數字,大於1000者即為自定義用戶
##########################################################
n=`awk -F ':' '$3>1000' /etc/passwd|wc -l`
if [ $n -gt 0 ]
then
echo "there are $n custom users"
else
echo "no custom user"
fi

結果輸出:

Linux腳本學習必經之路---shell腳本實例分享


3、監控磁盤分區以及inode使用率並告警

#!/bin/bash
################################################################
#監控所有磁盤分區以及inode使用率,當某個分區容量或inode使用量大於85%時,發送郵件告警
################################################################
#將系統語言設置為英文,如果是中文則會產生bug
LANG=en
log=/tmp/`date +%F.log`
tag1=0
tag2=0
df -h >> $log
df -i >> $log
#遍歷各個磁盤利用率的數值
for h in `df -h|grep -v 'Use'|awk -F ' +|%' '{print $5}'`
do
if [ $h -gt 85 ]
then
$tag1=1
fi
done
#遍歷各個磁盤inode的數值
for i in `df -i|grep -v 'Use'|awk -F ' +|%' '{print $5}'`
do
if [ $i -gt 85 ]
then
$tag2=1
fi
done
#磁盤空間以及inode都沒有問題,tag=0
if [ $tag1 -eq 0 ] && [ $tag2 -eq 0 ]
then
tag=0
fi
#磁盤空間有問題,inode沒有問題,tag=1

if [ $tag1 -eq 1 ] && [ $tag2 -eq 0 ]
then
tag=1
fi
#磁盤空間沒有問題,inode有問題,tag=2
if [ $tag1 -eq 0 ] && [ $tag2 -eq 1 ]
then
tag=2
fi
#磁盤空間以及inode都有問題,tag=3
if [ $tag1 -eq 1 ] && [ $tag2 -eq 1 ]
then
tag=3
fi
#根據不同的tag數值,最終輸出不同的結果
case $tag in
0)
echo "no problem."
##mail.py
;;
1)
echo "disk space is not enough."
##mail.py
;;
2)
echo "disk inode is not enough."
##mail.py
;;
3)
echo "disk space and disk inode are not enough."
##mail.py
;;
esac
Linux腳本學習必經之路---shell腳本實例分享

Linux腳本學習必經之路---shell腳本實例分享

輸出結果:

Linux腳本學習必經之路---shell腳本實例分享


4、監測目標目錄的文件生成情況

需求:用腳本每隔5分鐘監測目標目錄是否有新文件生成,若有新文件生成,則將新文件的列表輸出到一個按年、月、日、時、分為名字的日誌裡。

實現:

#!/bin/bash
##################################################################
#用腳本每隔5分鐘監測目標目錄是否有新文件生成,若有新文件生成,則將新文件
#列表輸出到一個按年、月、日、時、分為名字的日誌裡
##################################################################
a=`date -d "-5 min" +%Y-%m-%d-%H-%M`
logfile=/tmp/$a.log
basedir=/home
#查找修改時間少於5分鐘的文件,並將列表記錄在臨時文件中
find $basedir/ -type f -mmin -5 > /tmp/test.txt
n=`cat /tmp/test.txt|wc -l`
if [ $n -gt 0 ]
then
mv /tmp/test.txt $logfile
fi

Linux腳本學習必經之路---shell腳本實例分享

Linux腳本學習必經之路---shell腳本實例分享


5、查看常用命令,並列出TOP10

#!/bin/bash
####################################
#對歷史命令排序|查重|倒敘排列|取前10行
####################################
sort /root/.bash_history|uniq -c|sort -nr|head
Linux腳本學習必經之路---shell腳本實例分享

輸出:

Linux腳本學習必經之路---shell腳本實例分享


篇幅有限,這塊就介紹到這裡了,後面會分享更多腳本實例,感興趣的朋友可以關注下!

Linux腳本學習必經之路---shell腳本實例分享


分享到:


相關文章: