ulimit 命令主要用于控制用戶進程的資源使用情況,比如文件描述符的數量、并發進程的數量等。不過,ulimit 并不具備直接限制網絡帶寬的功能。如果需要對網絡帶寬加以限制,可以借助其他工具實現,比如 tc(Traffic Control)以及 nftables。
以下是利用 tc 工具來限制網絡帶寬的一個例子:
-
首先,確認您的系統已經安裝了 iproute2 軟件包,該軟件包內含 tc 命令。對于不同的 Linux 發行版本,可以通過以下命令安裝:
sudo apt-get install iproute2 # Debian/Ubuntu sudo yum install iproute # centos/RHEL sudo dnf install iproute # Fedora
-
設置一個名為 1: 的 qdisc(隊列規則):
sudo tc qdisc add dev eth0 root handle 1: htb default 30
-
對默認類創建一個 HTB(Hierarchical Token Bucket)類:
sudo tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit ceil 1mbit
此命令會把網絡接口 eth0 的總帶寬限制為 1 Mbps。您可以按照需求調整 rate 和 ceil 參數。
-
為特定的應用程序創建一個子類:
sudo tc class add dev eth0 parent 1:1 classid 1:10 htb rate 500kbps ceil 1mbit
這個命令會給您的應用程序分配 500 kbps 的帶寬。您可以根據自己的需求調整 rate 和 ceil 參數。
-
利用 iptables 把應用程序的流量標記成 10:
sudo iptables -A OUTPUT -t mangle -p tcp --dport 80 -j MARK --set-mark 10
這條命令會將發送到端口 80 的 TCP 流量標記為 10。您可以根據需要修改端口號和協議。
-
將標記過的流量綁定到子類上:
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 handle 10 fw flowid 1:10
現在,您的應用程序應當受到 500 kbps 帶寬的約束。需要注意的是,上述設置可能會在系統重啟之后失效。為了讓它們在開機時自動生效,您可以把這些命令加入到系統的啟動腳本當中。
假如您希望擁有更加高級的帶寬管理能力,不妨嘗試使用 nftables 或者一些第三方工具,像 Wondershaper、trickle 等。