查询linux服务器有哪些IP在连接
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $4}'| sort| uniq -c|sort -n netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -10
看看第二条: netstat -ntu 查看连接在此服务器上的ip地址
awk 进行切分 取出 第5列
cut -d: f1 以冒号分割 取出第一列
sort 进行一个从小到大的排序
uniq -c -c或--count 在每列旁边显示该行重复出现的次数。
http://www.runoob.com/linux/linux-comm-uniq.html uniq 命令的使用说明
sort -rn 按照连接倒序排序
head -n 10 取现10条
看一个命令解析:
cat detail.log | grep 2019-03-28 |awk '{print $3}'|cut -d: -f2 | uniq -c | sort -r | head -n 10 [root@iz25vpndgurz weixin]# cat detail.log | grep 2019-03-28 |awk '{print $3}'|cut -d: -f2 | uniq -c | sort -r | head -n 10 9 123.116.211.221 7 123.116.211.221 5 123.116.211.221 4 123.116.211.221 3 178.255.215.82 3 106.38.84.66 2 66.249.75.154 2 66.249.75.152 2 66.249.69.40 2 66.249.69.40 [root@iz25vpndgurz weixin]# cat detail.log | grep 2019-03-28 |awk '{print $3}'|cut -d: -f2|uniq | wc -l 273
1、统计一下 web站点下有多少人访问
netstat -nat | grep :80 |wc -l
netstat命令篇
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
一般使用组合
-ntlp
-nat
-nt 显示关于tcp相关的任务
cut命令篇
分割字符串使用
-d: -f 1 -d后面是分隔符 -f 1 取出分割后的第一个字符还是第二个字符
-c num1-num2 从第num1个字符 取到num2 个字符
cut -c 1-3 取出1到第3个字符
[root@localhost socket]# netstat -nt | grep :22 | awk '{print $4}' | cut -c 1-3 172 172 172 172 172 172
[root@localhost socket]# netstat -nt | grep :22 | awk '{print $4}' | cut -c 1-6 172.28 172.28 172.28 172.28 172.28 172.28
cut命令中 -d : -f 1 联用
[root@localhost socket]# netstat -nt | grep :22 | awk '{print $4}'| cut -d : -f 1 172.28.66.194 172.28.66.194 172.28.66.194 172.28.66.194 172.28.66.194 172.28.66.194
这是取出第一个串
取出分割后的第二个字符:
[root@localhost socket]# netstat -nt | grep :22 | awk '{print $4}'| cut -d : -f 2 22 22 22 22 22 22
以上就是cut 命令的使用了。
wc命令篇
-l 总共、共计
[root@localhost socket]# netstat -nt | grep :22 | awk '{print $4}'| cut -d : -f 2 22 22 22 22 22 22 #共计有多少条信息 wc -l [root@localhost socket]# netstat -nt | grep :22 | awk '{print $4}'| cut -d : -f 2 | wc -l 6
sort命令篇
https://www.cnblogs.com/51linux/archive/2012/05/23/2515299.html
sort -u 去除重复行 sort -r 倒序排 ,本身是自然排序 sort -t 分割符号指定 sort -n 按照数值的形式指定 sort -o 把结果输出到标准输出 [rocrocket@rocrocket programming]$ cat number.txt 1 3 5 2 4 [rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt [rocrocket@rocrocket programming]$ cat number.txt 5 4 3 2 1 sort -n 以数字方式排序 [rocrocket@rocrocket programming]$ cat number.txt 1 10 19 11 2 5 [rocrocket@rocrocket programming]$ sort number.txt 1 10 11 19 2 5 [rocrocket@rocrocket programming]$ sort -n number.txt 1 2 5 10 11 19 你有没有遇到过10比2小的情况。 我反正遇到过。出现这种情况是由于排序程序将这些数字按字符来排序了 sort -t -k [rocrocket@rocrocket programming]$ cat facebook.txt banana:30:5.5 apple:10:2.5 pear:90:2.3 orange:20:3.4 幸好,sort提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~) 指定了间隔符之后,就可以用-k来指定列数了。 [rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt apple:10:2.5 orange:20:3.4 banana:30:5.5 pear:90:2.3
以上是sort命令
[root@localhost socket]# netstat -nt | grep :22 | awk '{print $4}' 172.28.66.194:22 172.28.66.194:22 172.28.66.194:22 172.28.66.194:22 172.28.66.194:22 172.28.66.194:22
统计连接ssh 的客户端有多少个:
netstat -nt | grep :22 | awk '{print $4}' | awk -F : '{print $1}' | sort -u | wc -l 1
又是一条综合性的语句: sort 和 awk 都可以进行分割
但是有一些区别,就是 sort 可以分割后,直接拿到排序 。awk拿到的值只有一列。
[root@localhost logs]# ps -ef | grep mysql | grep -v 'grep' | sort -r -k 2 -t ' ' mysql 6672 2127 0 Dec06 ? 00:00:28 /usr/local/mysql5.6/bin/mysqld --basedir=/usr/local/mysql5.6 --datadir=/usr/local/mysql5.6/data --plugin-dir=/usr/local/mysql5.6/lib/plugin --user=mysql --log-error=/usr/local/mysql5.6/data/localhost.localdomain.err --pid-file=/usr/local/mysql5.6/data/localhost.localdomain.pid root 2127 1 1 Dec06 ? 00:16:13 /bin/sh /usr/local/mysql5.6/bin/mysqld_safe --datadir=/usr/local/mysql5.6/data --pid-file=/usr/local/mysql5.6/data/localhost.localdomain.pid [root@localhost logs]# ps -ef | grep mysql | grep -v 'grep' | sort -r -k 2 -t ' ' | awk '{print $1 $2}' mysql 6672
查看内存使用情况
free -m free -m | awk '{if(NR==2){print $3}}'