shell腳本:統計磁盤使用情況/IP訪問量/內存

每天一個文件記錄磁盤使用情況

#!/bin/bash
d=`date +%F`
dir=/data/disklog
#判斷文件存放目錄是否存在
if [ ! -d $dir ]
then
    mkdir $dir
fi
df -h > $dir/$d.txt
#只保留30天內的記錄文件
find $dir/ -mtime +30 |xargs rm

統計IP訪問量

通過nginx訪問日誌,統計IP的訪問量,日誌信息如下:

192.168.111.129 - - [09/Nov/2019:21:10:29 +0800] "GET / HTTP/1.1" 200 32 "-" "curl/7.29.0" "-"
192.168.111.129 - - [09/Nov/2019:21:10:30 +0800] "GET / HTTP/1.1" 200 32 "-" "curl/7.29.0" "-"
192.168.111.129 - - [09/Nov/2019:21:10:32 +0800] "GET / HTTP/1.1" 200 32 "-" "curl/7.29.0" "-"
192.168.111.129 - - [09/Nov/2019:21:13:24 +0800] "GET / HTTP/1.1" 200 18 "-" "curl/7.29.0" "-"
192.168.111.129 - - [09/Nov/2019:21:13:27 +0800] "GET / HTTP/1.1" 200 18 "-" "curl/7.29.0" "-"
192.168.234.1 - - [09/Nov/2019:22:01:34 +0800] "GET / HTTP/1.1" 200 21 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" "-"
192.168.234.1 - - [09/Nov/2019:22:01:34 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://192.168.234.200/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" "-"
192.168.234.1 - - [09/Nov/2019:22:01:36 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" "-"
192.168.234.1 - - [09/Nov/2019:22:01:37 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36" "-"

#訪問日誌記錄了每次請求的IP地址,所以統計每行最前面的IP地址數量即可

#!/bin/bash
log=/tmp/access.log
awk '{print $1}' $log |sort|uniq -c|sort -n -r

#執行該腳本即可將IP訪問的次數從大到小輸出

統計所有進程使用的內存總量

查看所有進程:

[root@linux shell]# ps -aux |head
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3 125656  3728 ?        Ss   11月20   0:34 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root         2  0.0  0.0      0     0 ?        S    11月20   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        S<   11月20   0:00 [kworker/0:0H]
root         5  0.0  0.0      0     0 ?        S    11月20   0:03 [kworker/u128:0]
root         6  0.0  0.0      0     0 ?        S    11月20   0:09 [ksoftirqd/0]
root         7  0.0  0.0      0     0 ?        S    11月20   0:00 [migration/0]
root         8  0.0  0.0      0     0 ?        S    11月20   0:00 [rcu_bh]
root         9  0.0  0.0      0     0 ?        R    11月20   0:14 [rcu_sched]
root        10  0.0  0.0      0     0 ?        S<   11月20   0:00 [lru-add-drain]

#第六列RSS即是每個進程的內存使用量

腳本思路:grep -v 過濾掉第一行內容,awk獲取第六列的值,循環遍歷每行的RSS值並相加即可得出所有進程的內存使用量

#!/bin/bash
sum=0
for i in `ps -aux|grep -v "%CPU %MEM"|awk '{print $6}'`
do
	sum=$[$sum+$i]
done
echo $sum
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章