查找 CPU、内存占用过高进程
使用
PS
格式输出查看进程状态,ps -eo
支持如下:
显示内容 | 描述 |
---|---|
user | 用户名 |
uid | 用户号 |
pid | 进程号 |
ppid | 父进程号 |
size | 内存大小,Kbytes 字节 |
vsize | 总虚拟内存大小,bytes 字节(包括 code + data + stack) |
share | 总共享页数 |
nice | 进程优先级(缺省为 0,最大为 -20) |
priority(pri) | 内核调度优先级 |
pmem | 进程分享的物理内存数的百分比 |
trs | 程序执行代码驻留大小 |
rss | 进程使用的总物理内存数,Kbytes字节 |
time | 进程执行起到现在总的CPU暂用时间 |
stat | 进程状态 |
cmd(args) | 执行命令的简单格式 |
命令如下:
sh
# CUP占用前10排序
ps -eo user,pid,pcpu,pmem,args --sort=-pcpu |head -n 10
# 内存占用前10排序
ps -eo user,pid,pcpu,pmem,args --sort=-pmem |head -n 10
iptables 自动屏蔽访问频繁的 IP
每分钟访问网站超过 200 的 IP
通过 Nginx 访问日志
sh
通过 TCP 建立的连接
sh
每分钟 SSH 尝试登录超过 10 次的 IP
查看连接本机的远程 IP
使用
netstat -atn
查看本机所有连接的状态:
-a
查看所有-t
仅显示 tcp 连接信息-n
数字格式显示sh# Local Address(本机 IP 和端口信息)、Foreign Address(远程 IP 和端口信息) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
使用
awk
命令,仅显示Foreign Address
数据,再显示IP
地址的信息,通过sort
按照数字大小排序,再使用uniq
将多余重复删除,并统计重复次数。
命令如下:
sh
# 显示 IP + 端口
netstat -atn | awk '{print $5}' | sort -nr | uniq -c
# 显示 IP
netstat -atn | awk '{print $5}' | awk -F: '{print $1}' | sort -nr | uniq -c