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
這里,eth0 是您要限制帶寬的網絡接口。請根據您的實際情況替換為正確的接口名稱。
為默認類創建一個 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 等。