有时侯我们须要限制一些进程或程序对带宽的占用,比如限制上传或下载速率。本文介绍两种方法来实现。

Linux中限制一个应用的速度

限制网路流量速度的一种方式是通过一个名为trickle的命令行工具。通过在程序运行时,预先加载一个速度限制socket库的方式,trickle命令容许你改变任意一个特定程序的流量。trickle命令有一个挺好的特点是它仅在用户空间中运行,这意味着,你不必需要root权限就可以限制一个程序的带宽使用。要能使用trickle程序控制程序的带宽,这个程序就必须使用非静态链接库的套接字插口。当你想对一个不具有外置带宽控制功能的程序进行速度限制时linux 查看带宽 命令,trickle可以帮得上忙。

在Ubuntu,Debian及其衍生发行版中安装trickle:

$ sudo apt-get install trickle

在Fdora或CentOS/RHEL(带有EPEL软件库房):

linux怎么看带宽_linux 查看带宽 命令_linux查看宽带的命令

$ sudo yum install trickle

trickle的基本使用方式如下。仅需简单地把trickle命令(及速度参数)置于想运行的命令之前。

$ trickle -d <download-rate> -u <upload-rate>  <command> 

这就可以将的下载和上传速度限定为特定值(单位KBytes/s)。

比如,将scp会话的最大上传带宽设定为100KB/s:

$ trickle -u 100 scp backup.tgz user@remote_host.com:

假如须要,还可以通过创建一个自定义启动器的方法,使用下边的命令为Firefox浏览器设定最大下载速度(比如linux 查看带宽 命令linux通配符,300KB/s)。

trickle -d 300 firefox %u

最后,trickle也可以以守护进程模式运行,在该模式下,它将会限制所有通过trickle启动且正在运行的程序的总带宽之和。启动trickle使其作为一个守护进程(比如,trickled):

$ sudo trickled -d 1000

一旦trickled守护进程在后台运行,便可以通过trickle命令来启动其他程序。如果你通过trickle启动一个程序,这么这个程序的最大下载速度将是1000KB/s,如果你再通过trickle启动了另一个程序,则每位程序的(下载)速度极限将会被限制为500KB/s,等等。

在Linux中限制一个网路插口的速度

另一种控制带宽资源的方法是在每一个插口上限制带宽。这在与其他人分享的网路联接的上行带宽时尤为实用。可以通过wondershaper这个工具实现。

wondershaper实际上是一个shell脚本,它使用tc来定义流量调整命令,使用QoS来处理特定的网路插口。外发流量通过置于不同优先级的队列中,达到限制传出流量速度的目的;而传入流量通过丢包的方法来达到速度限制的目的。

事实上,wondershaper的既定目标不仅仅是对一个插口降低其带宽上限;当批量下载或上传正在进行时,wondershaper还企图去保持互动性会话如SSH的低延后。同样的linux 电子书,它就会控制批量上传(比如,Dropbox的同步)不会促使下载“窒息”,反之亦然。

linux怎么看带宽_linux 查看带宽 命令_linux查看宽带的命令

在UbuntuDebian及其衍生发行版中安装wondershaper:

$ sudo apt-get install wondershaper

在Fdora或CentOS/RHEL(带有EPEL软件库房)中安装wondershaper:

$ sudo yum install wondershaper 

wondershaper的基本使用如下:

linux查看宽带的命令_linux怎么看带宽_linux 查看带宽 命令

 $ sudo wondershaper <interface> <download-rate> <upload-rate> 

举个事例,将eth0的最大下载/上传带宽分别设定为1000Kbit/s和500Kbit/s:

$ sudo wondershaper eth0 1000 500 

也可以通过运行下边的命令将速度限制进行清除:

$ sudo wondershaper clear eth0

对wondershaper的运行原理感兴趣的话,可以阅读其shell脚本源文件(/sbin/wondershaper)。

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复