目錄
一、配置環(huán)境的shell腳本
?二、系統(tǒng)資源腳本
一、要求
二、腳本內容
三、腳本解析
四、賦權并驗證
三、查看當前內存的總大小、實際使用大小、剩余大小、顯示使用率百分比的腳本
一、第一種方法
二、驗證
三、第二種方法
四、驗證
四、查看網卡實時流量腳本
一、編輯腳本
?二、驗證結果
五、把當前目錄(包含子目錄)下所有后綴為 ".sh" 的文件后綴變更為 ".shell",之后刪除每個文件的第二行。
一、編寫腳本
二、驗證
六、統(tǒng)計訪問最多的十個IP
一、首先模擬創(chuàng)建IP、編寫腳本
二、驗證ip生成結果
七、磁盤使用率檢測腳本
一、首先lsblk 查看一下磁盤情況
二、進入編寫腳本
八、備份當前日期文件
一、編寫腳本
二、腳本結果驗證
因新接觸shell腳本,所以只能一直統(tǒng)計和手機不一樣的shell腳本,水平有限,希望可以幫助到大家如果有錯誤的地方歡迎大家及時指出,我們共同進步,(#^.^#)。
一、配置環(huán)境的shell腳本
systemctl stop firewalld
systemctl disable firewalld
systemctl stop NetworkManager
systemctl disable NetworkManager
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
cat << e > /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=$1
PREFIX=24
GATEWAY=192.168.115.2
DNS1=192.168.115.2
e
systemctl restart network
?將此腳本放入終端中,后續(xù)輸入想設置的IP 則成功配置環(huán)境并設置ip?
?結果查看
?二、系統(tǒng)資源腳本
一、要求
1. 編寫一個腳本來監(jiān)控 CPU 使用率、內存使用率、磁盤空間等系統(tǒng)資源。
2. 實時顯示系統(tǒng)資源的使用情況,并根據預設的閾值提供警報功能。
3. 腳本應該可以在后臺運行,每隔一定時間自動更新資源狀態(tài)。
4. 提供一個簡單的用戶界面(命令行或圖形界面),方便用戶查看當前系統(tǒng)資源的情況。
二、腳本內容
#!/bin/bash
#lsq
#監(jiān)測腳本
while true
do
times=10
#磁盤
disk=$(df -Th | awk '{ print $6 }' | awk 'NR==6' |cut -d "%" -f 1)
#內存
mem=$(free -m | grep "Mem" | awk '{ printf "%.0f", $3/$2 * 100 }')
#cpu
cpu=$(top -n 1 | grep "Cpu(s)" | awk '{ printf "%.0f", $2+$4 }')
#顯示監(jiān)測情況:
? ? ? ? echo "******************"
? ? ? ? echo "CPU使用率$cpu %"
? ? ? ? echo "內存使用率$mem %"
? ? ? ? echo "磁盤使用率$disk %"
? ? ? ? echo "******************"
#——————————————————————————————————
disk1=80
mem1=80
cpu1=80
if [ "$mem" -ge "$mem1" ];then
? ? ? ? echo "內存使用已到$mem %,請注意" && exit 0
fi
if [ $cpu -ge $cpu1 ];then
? ? ? ? echo "CPU使用已到$cpu %,請注意" && exit 0
fi
if [ $disk -ge $disk1 ];then
? ? ? ? echo "磁盤使用已到$disk ,請注意" && exit 0
fi
sleep $times
done
三、腳本解析
這是一個監(jiān)測腳本,用于監(jiān)測系統(tǒng)的磁盤、內存和CPU使用率。下面是對腳本中各部分的解析:
-
#!/bin/bash
:指定腳本采用Bash解釋器。 -
#mpy
:注釋,用于說明腳本的用途。 -
while true
:一個無限循環(huán),表示腳本會一直執(zhí)行下去。 -
dotimes=10
:設置一個變量dotimes的值為10。 -
disk=$(df -Th | awk '{ print $6 }' | awk 'NR==6' |cut -d "%" -f 1)
:使用df命令獲取磁盤信息,并使用awk和cut命令提取出磁盤使用率的數值部分。 -
mem=$(free -m | grep "Mem" | awk '{ printf "%.0f", $3/$2 * 100 }')
:使用free命令獲取內存信息,再使用awk命令計算內存使用率百分比。 -
cpu=$(top -n 1 | grep "Cpu(s)" | awk '{ printf "%.0f", $2+$4 }')
:使用top命令獲取CPU信息,并使用awk命令計算CPU使用率百分比。 -
echo "******************"
:打印分隔線。 -
echo "CPU使用率$cpu %"
:打印CPU使用率。 -
echo "內存使用率$mem %"
:打印內存使用率。 -
echo "磁盤使用率$disk %"
:打印磁盤使用率。 -
echo "******************"
:打印分隔線。 -
disk1=80
:設置一個變量disk1的值為80,表示磁盤使用率的閾值。 -
mem1=80
:設置一個變量mem1的值為80,表示內存使用率的閾值。 -
cpu1=80
:設置一個變量cpu1的值為80,表示CPU使用率的閾值。 -
if [ "$mem" -ge "$mem1" ]; then
:如果內存使用率大于等于閾值mem1,則執(zhí)行下面的命令。 -
echo "內存使用已到$mem %,請注意" && exit 0
:打印內存使用率達到閾值的警告信息,并退出腳本。 -
if [ $cpu -ge $cpu1 ]; then
:如果CPU使用率大于等于閾值cpu1,則執(zhí)行下面的命令。 -
echo "CPU使用已到$cpu %,請注意" && exit 0
:打印CPU使用率達到閾值的警告信息,并退出腳本。 -
if [ $disk -ge $disk1 ]; then
:如果磁盤使用率大于等于閾值disk1,則執(zhí)行下面的命令。 -
echo "磁盤使用已到$disk ,請注意" && exit 0
:打印磁盤使用率達到閾值的警告信息,并退出腳本。 -
sleep $times
:暫停腳本執(zhí)行一段時間,時間長度由變量times指定。 -
done
:結束while循環(huán)。
?
四、賦權并驗證
三、查看當前內存的總大小、實際使用大小、剩余大小、顯示使用率百分比的腳本
一、第一種方法
#!/bin/bash
Mem_all=$(free -m | awk '/Mem/ {print $2}')
Mem_used=$(free -m | awk '/Mem/ {print $3}')
Mem_free=$(free -m | awk '/Mem/ {print $4}')
Mem_usage=$(free -m | awk '/Mem/ {printf "%.0f", $3/$2 * 100}')
echo "當前內存總共: $Mem_all MB"
echo "當前內存已使用: $Mem_used MB"
echo "當前剩余: $Mem_free MB"
echo "當前物理內存使用率: $Mem_usage%"?
?
二、驗證
三、第二種方法
#!/bin/bash
# 獲取內存信息
mem_info=$(free -m | awk 'NR==2{print}')
# 獲取內存總量、已使用量和剩余量(以兆字節(jié)為單位)
total=$(echo $mem_info | awk '{print $2}')
used=$(echo $mem_info | awk '{print $3}')
free=$(echo $mem_info | awk '{print $4}')
# 計算內存使用率
usage_percent=$(echo "scale=2; $used / $total * 100" | bc)
# 打印信息
echo "物理內存總量:${total}MB"
echo "已使用內存:${used}MB"
echo "剩余內存:${free}MB"
echo "內存使用率:${usage_percent}%"
四、驗證
四、查看網卡實時流量腳本
一、編輯腳本
#!/bin/bash
NIC=ens33
echo -e " In ------ Out"
while true; do
? ? ? ? OLD_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev)
? ? ? ? OLD_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev)
sleep 1
? ? ? ? NEW_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev)
? ? ? ? NEW_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev)
? ? ? ? IN=$(printf "%.1f%s" "$((($NEW_IN-$OLD_IN)/1024))" "KB/s")
? ? ? ? OUT=$(printf "%.1f%s" "$((($NEW_OUT-$OLD_OUT)/1024))" "KB/s")
? ? ? ? echo "$IN $OUT"
? ? ? ? sleep 1
done
?二、驗證結果
五、把當前目錄(包含子目錄)下所有后綴為 ".sh" 的文件后綴變更為 ".shell",之后刪除每個文件的第二行。
先查看目錄下的后綴文件
一、編寫腳本
?#!/bin/bash
ALL_SH_FILE=$(find . -type f -name "*.sh")
????????for file in ${ALL_SH_FILE[*]}
do
????????filename=$(echo $file | awk -F'.sh' '{print $1}')
????????new_filename="${filename}.shell"
????????mv "$file" "$new_filename"
????????sed -i '2d' "$new_filename"
done
二、驗證
六、統(tǒng)計訪問最多的十個IP
一、首先模擬創(chuàng)建IP、編寫腳本
vim /makeiplog.sh
#!/bin/bash
for i in {1..30};do
? ? ? ? host=$[$RANDOM % 10]
? ? ? ? host1=$[$RANDOM % 10]
? ? ? ? echo "192.168.$host1.$host" >> /root/ip.log
done
賦權并啟動
二、驗證ip生成結果
?輸入 vim ip.log 查看
輸入命令?
awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print v,a[v]}' ip.log |sort -k2 -nr |head -10
?顯示結果
awk '{a[$1]++}END{print "UV:",length(a);for(v in a)print v,a[v]}' ip.log |sort -k2
升序顯示
七、磁盤使用率檢測腳本
一、首先lsblk 查看一下磁盤情況
?echo fdisk.sh 創(chuàng)建
二、進入編寫腳本
#!/bin/bash
# 截取IP
IP=`ifconfig eth0 |awk -F " " 'NR==2{print $2}'`
# 定義使用率,并轉換為數字
SPACE=`df -Ph |awk '{print int($5)}'`
for i in $SPACE
do
if [ $i -ge 80 ]
then
echo "$IP的磁盤使用率已經超過了80%,請及時處理"
fi
done
?
授權、并驗證結果
?如果把腳本內容改為90則,驗證的時候會提示超過百分之九十
?./fdisk.sh 驗證
八、備份當前日期文件
一、編寫腳本
#!/bin/bash
#一月前
historyTime=$(date "+%Y-%m-%d %H" -d '1 month ago')
echo ${historyTime}
historyTimeStamp=$(date -d "$historyTime" +%s)
echo ${historyTimeStamp}
#一周前
date_this_month=`date +%Y%m01`
#一天前
date_today=`date -d '1 day ago' +%Y%m%d`
這是一個Bash腳本,下面是對每個部分的解釋:
-
historyTime=$(date "+%Y-%m-%d %H" -d '1 month ago')
:獲取一月前的日期和時間,并將其存儲在變量historyTime
中。date
命令的-d
選項用于指定日期,"+%Y-%m-%d %H"
表示輸出格式為年-月-日 小時。 -
echo ${historyTime}
:打印變量historyTime
的值,即一月前的日期和時間。 -
historyTimeStamp=$(date -d "$historyTime" +%s)
:將變量historyTime
轉換成時間戳格式并存儲在變量historyTimeStamp
中。date
命令的-d
選項用于指定日期,+%s
表示輸出時間戳。 -
echo ${historyTimeStamp}
:打印變量historyTimeStamp
的值,即一月前的時間戳。 -
date_this_month=
date +%Y%m01``:獲取當月的年和月,并在末尾添加"01",表示當月的第一天。結果存儲在變量date_this_month
中。 -
date_today=
date -d '1 day ago' +%Y%m%d``:獲取昨天的日期,并以年月日的格式存儲在變量date_today
中。
這段腳本的目的是獲取一月前的日期和時間,并將其轉換成時間戳格式。然后,獲取當月的第一天的日期和昨天的日期。
文章來源:http://www.zghlxwxcb.cn/news/detail-660453.html
二、腳本結果驗證
root@localhost ~]# ./jiaoben.sh?
2023-07-29 21
1690635600文章來源地址http://www.zghlxwxcb.cn/news/detail-660453.html
到了這里,關于shell 簡單且常用的幾種的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!