ulimit无法限制网络带宽,需要使用Linux自带的tc工具进行精准限速。tc通过创建队列规则、定义限速类及过滤器来实现带宽控制。nethogs则可以按进程实时监控带宽占用,并辅助定位异常的流量来源。上述所有操作均需要root用户权限。
很多人以为 ulimit 是万能的资源限制工具,看到网速跑满就想让它来限制网络带宽。但事实上,ulimit 主要用于管理文件描述符、进程数这类系统资源,与网络带宽控制完全是两回事。不过 Linux 下确实有专门的工具可以精准控制带宽,操作也并不复杂。

长期稳定更新的攒劲资源: >>>点此立即查看<<<
下面介绍两个经典工具:一个用于限速,一个用于监控。
tc 实现精准限速tc(Traffic Control)是 Linux 内核自带的流量控制工具,功能强大,可以像路由器一样精细化管理带宽。例如,要将 eth0 网卡的下载速度限制为 1Mbps,只需执行以下三条命令:
sudo tc qdisc add dev eth0 root handle 1: htb default 30
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 0.0.0.0/0 flowid 1:1
看起来稍显复杂,但逻辑清晰:先创建队列规则(qdisc),再定义限速类(class),最后通过过滤器将目标流量引导至该类。如需恢复,一条命令即可清空:
sudo tc qdisc del dev eth0 root
需要注意的是,tc 默认影响整个接口的流量。如果只想限制某个特定进程或用户的带宽,需结合 cgroups 或 iptables 标记来实现,此处不作展开。
nethogs 实时监控带宽占用限速之前,需要先了解究竟哪个进程在占用带宽。nethogs 是一个按进程显示实时网络带宽占用的小工具,比 iftop 更直观。安装命令如下:
# Debian/Ubuntu
sudo apt-get install nethogs
# RHEL/CentOS
sudo yum install nethogs
安装完成后,直接运行即可查看 eth0 上每个进程的实时上下行速度:
sudo nethogs eth0
界面会动态刷新,直观显示哪个进程占用了大量带宽。此时再结合 tc 或 cgroups 进行限制,目标明确。
最后提醒:上述操作通常需要 root 权限,普通用户无法直接调用。如需按用户粒度管理带宽,cgroups 是更可靠的方向——这属于另一个话题。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述