服务器可能经常遇到服务器出带宽跑满,不知如何查询被哪个进程占用的情况,有一款开源的英文软件iftop功能比较强大可以查询相关信息,可能刚接触linux系统的朋友不太会使用,在此写了一个功能比较简单无需安装的带宽查看脚本,可以查询linux服务器当前带宽使用量,有需要的朋友可以试试 

 

快速使用方法 

 

1、下载脚本 

ssh登录服务器后输入: 

 

英文版: 

wget http://jinxiang.oss-cn-hangzhou.aliyuncs.com/vmnetcheck.sh 

 

中文版: 

gbk版本(默认使用这个就行): 

wget http://jinxiang.oss-cn-hangzhou.aliyuncs.com/vmnetcheckgbk.sh 

utf8版本(如果乱码使用这个版本):  

wget http://jinxiang.oss-cn-hangzhou.aliyuncs.com/vmnetcheckutf8.sh 

 

 

2、增加权限 

chmod +x vmnetcheck.sh 

 

如果下载的是中文版则执行: 

chmod +x vmnetcheckgbk.sh 

chmod +x vmnetcheckutf8.sh 

 

3、执行脚本 

./vmnetcheck.sh  

 

如果下载的是中文版则执行: 

./vmnetcheckgbk.sh  

./vmnetcheckutf8.sh 

 

 

脚本详细使用方法: 

例:./vmnetcheck.sh [eth0|eth1] 

参数说明: 

不写参数时,默认检查外网网卡eth1 

eth0  :检查内网网卡 

eth1  :检查外网网卡 

其他: 

脚本需要按q键退出,无法使用ctrl+c停止 

 

例: 

以下例子,在本地电脑进行了一个web下载后,可以发现测试机的出带宽达到2.23Mb,测试机是2M的带宽,说明已经满了,这时能看到出队列的值比较高是一个nginx进程,说明该进程可能是导致带宽满的原因,可以根据此信息定位问题。 

 

 

 

 

2014年11月24日增加英文版 

 

英文版例: 

 

 

 

 

这里说明进程PID为10042的nginx进程占用了较高的带宽,已经跑到1.07Mb 

 

 

 

 

第一行: 

Private IP:    内网IP 

Public IP:    公网IP 

ICMP:如果禁ping会显示,没有禁用不会显示 

 

第二行: 

SSH Port:显示当前ssh端口 

SSH root Login:显示当前是否允许root登陆 

SSH Password Authentication:显示当前是否允许密码验证 

 

第三行: 

Press q to exit  :脚本必须要按q键才能推出,ctrl+c不行 

 

第四行: 

interface:显示当前网卡,阿里云ECS eth0是内网 eth1是公网 

InBand: 入网带宽,单位是千字节每秒,括号里单位是兆比特每秒,阿里云ECS默认入网带宽不限速 

OutBand:出网带宽,单位是千字节每秒,括号里单位是兆比特每秒,购买几兆带宽,就能跑几兆 

 

第五行及之后行: 

Recv-Q:入网队列(收到数据包的队列),如果从服务器内部下载文件,这个会比较高。 

Send-Q:出网队列(发送数据包的队列),这个数值越大,这一行进程占用的带宽越多,如果出带宽满了,主要看这里 

Local:服务器本地IP及端口 

Foreign:外部访问者的IP及端口,如果某IP下载很多高,可以排查下这个访问者 

PID/Name:进程PID和进程名字