netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
我解释一下,如果有不对的,请高手指教。 /^tcp/ # 搜索以tcp开头的行 S[$NF] 以$NF为数组下标,建立数组S ++S[$NF] 给数组S赋值,相当于有一个tcp那么这个S数组里的元素就+1 /^tcp/ {++S[$NF]} 整个意思应该是 匹配出一个tcp协议的连接 数组S就+一个元素值 END是前面的/^tcp/ {++S[$NF]} 执行结束后在执行 {for(a in S) print a, S[a]} 将S值代入a 打印a 和这个S[a]数组的值 比如S是10 那么a就是10 S[a] 就是s这个数组的第10个元素的值
返回结果示例:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。
状态:描述
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
查看Nginx运行进程数
ps -ef | grep nginx | wc -l返回的数字就是nginx的运行进程数
如果是apache则执行
ps -ef | grep httpd | wc -l3
查看Web服务器进程连接数:
netstat -antp | grep 80 | grep ESTABLISHED -c4
查看MySQL进程连接数:
ps -axef | grep mysqld -c
grep -c 的作用类似grep | wc -l,不同的是,如果是查找多个文件,grep -c会统计每个文件匹配的行数,每行一个文件的列出来,而wc -l 则列出总的统计数字。
另外grep -c 要比 grep | wc -l快一点。