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
发布了114 篇原创文章 · 获赞 851 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/Powerful_Fy/article/details/103182605