再Linux系统中限制网络带宽使用的教程

   假如你经常在 Linux 桌面上运行多个网络应用,或在家中让多台电脑共享带宽;那么你可能想更好地控制带宽的使用。否则,当你使用下载器下载一个大文件时,交互式 SSH 会话可能会变得缓慢以至不可用;或者当你通过 Dropbox 来同步一个大文件夹时,你的室友可能会抱怨在她的电脑上,视频流变得断断续续。

  在本教程中,我将为你描述两种在 Linux 中限制网络流量速率的不同方法。

  在 Linux 中限制一个应用的速率

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

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

  代码如下:

  $ sudo apt-get install trickle

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

  代码如下:

  $ sudo yum install trickle

  trickle 的基本使用方法如下。仅需简单地把 trickle 命令(及速率参数)放在你想运行的命令之前。

  代码如下:

  $ trickle -d -u

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

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

  代码如下:

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

  如若你想,你可以通过创建一个自定义启动器的方式,使用下面的命令为你的 Firefox 浏览器设定最大下载速率(例如, 300 KB/s)。

  代码如下:

  trickle -d 300 firefox %u

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

  代码如下:

  $ sudo trickled -d 1000

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

  在 Linux 中限制一个网络接口的速率

  另一种控制你的带宽资源的方式是在每一个接口上限制带宽。这在你与其他人分享你的网络连接的上行带宽时尤为实用。同其他一样,Linux 有一个工具来为你做这件事。wondershaper就是干这个的。

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

  事实上, wondershaper 的既定目标不仅仅是对一个接口增加其带宽上限;当批量下载或上传正在进行时,wondershaper 还试图去保持互动性会话如 SSH 的低延迟。同样的,它还会控制批量上传(例如, Dropbox 的同步)不会使得下载“窒息”,反之亦然。

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

  代码如下:

  $ sudo apt-get install wondershaper

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

  复制代码

  代码如下:

  $ sudo yum install wondershaper

  wondershaper 的基本使用如下:

  代码如下:

  $ sudo wondershaper

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

  代码如下:

  $ sudo wondershaper eth0 1000 500

  你也可以通过运行下面的命令将速率限制进行消除:

  代码如下:

  $ sudo wondershaper clear eth0

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

  总结

  在本教程中,我介绍了两种不同的方法,来达到如何在 Linux 桌面环境中,控制每个应用或每个接口的带宽使用的目的。 这些工具的使用都很简单,都为用户提供了一个快速且容易的方式来调整或限制流量。 对于那些想更多地了解如何在 Linux 中进行速率控制的读者,请参考 the Linux bible.

时间: 2024-09-16 17:47:48

再Linux系统中限制网络带宽使用的教程的相关文章

Linux系统中的curl命令使用教程

  命令:curl 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工具. 语法:# curl [option] [url] 常见参数: -A/--user-agent 设置用户代理发送给服务器 -b/--cookie -c/--cookie-jar 操作结束后把cookie写入到这个文件中 -C/--continue-at 断点续转 -D/--dump-heade

关闭Linux系统中的SELinux功能的教程

  1.以根用户登录Linux系统,然后在提示符后输入命令sestatus,可以看出目前SELinux功能是处于开启状态的. 2.在提示符后输入vi /etc/sysconfig/selinux命令,进入SElinux的配置文件. 3.在SELinux配置文件中,将SELINUX=enforcing,改为SELINUX=disabled,然后保存退出. 4.重新启动Linux系统. 5.以根用户登录后,输入sestatus命令,可以看出SELinux功能已经关闭. 注意事项:如果想学习SELin

Linux系统中strace命令的使用教程

  在调试的时候,strace能帮助你追踪到一个程序所执行的系统调用.当你想知道程序和操作系统如何交互的时候,这是极其方便的,比如你想知道执行了哪些系统调用,并且以何种顺序执行. 这个简单而又强大的工具几乎在所有的Linux操作系统上可用,并且可被用来调试大量的程序. 命令用法 让我们看看strace命令如何追踪一个程序的执行情况. 最简单的形式,strace后面可以跟任何命令.它将列出许许多多的系统调用.一开始,我们并不能理解所有的输出,但是如果你正在寻找一些特殊的东西,那么你应该能从输出中发

在Linux系统中存储设备的两种表示方法

摘要: 硬盘和硬盘分区在Linux都表示为设备,按我们通俗的说法来说,就是怎么来表示或描述硬盘和或硬盘分区,但这种描述应该是科学和具体的:比如IDE硬盘,在Linux 可以表示为 /dev/hda./dev/hdb ... :SCSI 接口的硬盘.SATA接口的硬盘表示为/dev/sda./dev/sdb ... ... :而IDE接口的硬盘/dev/hda,也可以表示为hd0 ,而 SCSI 接口的如果是 /dev/sda ,另一种表示方法是sd0: 理解两种表示方法有何用?至少GRUB引导管

MySQL在Linux系统中隐藏命令行中的密码的方法

  这篇文章主要介绍了MySQL在Linux系统中隐藏命令行中的密码的方法,作者利用简单的C程序实现,需要的朋友可以参考下 在命令行中输入命令并不是一个好主意,会造成安全问题.但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息.那么,你能通过以下方法禁止系统的其他用户轻易的看到这些敏感数据 呢?,类似MySQL在ps命令下隐藏密码. 假设我这里系统里两个用户,一个是root ,一个是dabu .测试系统为centos 6.5在按照下面的步骤做: ? 1 2 3 4 [r

Linux系统中与中文显示相关的一些编码设置方法

  对于国内的Linux用户,经常烦恼的一个问题是:系统常常在需要显示中文的时候却显示成了乱码,而由于某些原因,需要英文界面的系统的时候,却苦于系统不能正常输入和显示中文.另外,由于大部分主要Linux发行版都是以英语为主体的,英文界面的系统和应用程序不管在界面的美观程度和稳定程度上都比中文的略好一些,各种奇怪的BUG也要少一些.因此,很多稍微有英语基础的Linux用户都宁愿使用英文界面的系统.但是,矛盾又突现出来:在英文系统下,如何才能正常显示和输入中文呢?有没有两全其美的方案呢?因此,笔者开

Linux系统中的文件名和文件种类以及文件权限详解

  Linux文件种类与副文件名 一直强调一个概念,那就是:任何装置在Linux底下都是文件, 不仅如此,连资料沟通的介面也有专属的文件在负责-所以,你会瞭解到,Linux的文件种类真的很多- 除了前面提到的一般文件(-)与目录文件(d)之外,还有哪些种类的文件呢? * 文件种类: 我们在刚刚提到使用'ls -l'观察到第一栏那十个字元中,第一个字元为文件的类型. 除了常见的一般文件(-)与目录文件(d)之外,还有哪些种类的文件类型呢? * 正规文件(regular file ): 就是一般我们

linux系统中程序的安装、卸载和升级教程

对于Linux初学者来说,RPM安装是一个不错的选择.如果想真正掌握Linux系统,源代码安装仍然是Linux下软件安装的重要手段.由于linux系统中应用软件的安装和大家熟悉的windows下面的软件的安装过程存在很大的区别,在linux中,根据下载到安装包的格式的不同用不同的安装方法,下面将对linux下的应用程序安装进行总结和归纳. 1.源代码包的安装 gzip -d apache_1.3.20.tar.gz (解压) tar xvf apache_1.3.20.tar (解包) cd a

linux系统中的批量删除文件与空文件删除的命令介绍

本章为大家详细的整理了,在linux系统中批量删除文件和空文件删除的命令,请大家"对症下药" linux下面删除文件或者目录命令rm(remove) 功能说明:删除文件或目录. 语 法:rm [-dfirv][--help][--version][文件或目录...] 补充说明:执行rm指令可删除文件或目录,如欲删除目录必须加上参数"-r",否则预设仅会删除文件. 参 数: -d或--directory 直接把欲删除的目录的硬连接数据删成0,删除该目录. -f或--f