當背景下載佔滿頻寬導致網頁瀏覽卡頓時,Trickle 這款用戶空間頻寬塑形工具能派上大用場。它不需核心模組支援,透過 LD_PRELOAD 攔截動態連結的 Socket API,即可針對單一程式限制上傳/下載速度。本文詳細說明 Trickle 的安裝、原理、適用範圍與實戰操作。
Trickle 是一款輕量級頻寬控制工具,適用於任何使用 glibc 動態連結的 TCP 應用程式(如 wget、curl、scp、ftp、SSH、瀏覽器等)。它在用戶空間運作,無需 root 權限即可由一般使用者對自己的程式限速。
sudo apt-get update
sudo apt-get install trickle
sudo yum update
sudo yum install trickle
注意: CentOS 7/8 需啟用 EPEL 倉庫(yum install epel-release)。
LD_PRELOAD 載入 libtrickle.so,覆寫 send()、recv() 等 Socket 函式,延遲資料傳輸以達到限速效果。gcc -static)、Go/Rust 預設靜態連結的二進位檔、透過 dlopen 手動載入 Socket 的程式均無效。sudo 執行的指令環境變數會被清除,Trickle 失效。使用 ldd 檢查程式是否動態連結 libc.so:
ldd /usr/bin/filezilla | grep libc.so
若有輸出(如 libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6),即可使用 Trickle 限速。
trickle -d 500 -u 100 wget https://example.com/largefile.iso
-d 500:下載限速 500 KB/s-u 100:上傳限速 100 KB/strickle -u 200 scp bigfile.tar.gz user@remote:/path/
trickle -d 1000 -u 200 bash
# 此 Shell 內啟動的所有動態連結程式均受限
wget ...
scp ...
exit # 結束限速環境
trickled -d 1000 -u 200 # 啟動 daemon
trickle -d 500 wget ... # 客戶端連接 daemon,共享頻寬池
trickle -d 200 寫入備份腳本,避免備份佔滿頻寬影響線上服務。tc (Traffic Control) 核心級 QoS。trickle-gtk 套件提供簡單 GUI 設定。Trickle 是快速解決「單一程式佔滿頻寬」的利器,安裝簡單、無需權限、即時生效。但受限於用戶空間機制,無法替代核心級流量控制。對於生產環境的精細 QoS,建議改用 tc + htb 或網路設備原生 QoS 功能。
Ubuntu 使用 UbuTricks 一鍵安裝最新版應用程式(遊戲、多媒體、開發工具等)
Linux xhost 命令详解:X Server 访问控制与远程图形应用授权
Linux rmdir 指令完全指南:安全刪除空目錄與遞迴清理技巧
Sysdig 系統故障排查實戰指南:安裝、捕獲、過濾、Chisels 進階分析
Linux Bash Shellshock (破殼) 漏洞 (CVE-2014-6271/7169) 檢測與修補完整指南
Linux nohup 命令詳解:後台持久運行、輸出重導向與 Session 斷開保護