linux上傳限速指令碼
以下指令碼可用於對伺服器進行上傳限速,當業務使用處於高峰期時,為不影響業務的正常使用,限制上傳速度,保證能正常提供服務。
原理是使用linux中的TC(流量控制模組)實現限速功能。
指令碼的使用如下:
啟動:sh limit.sh start 200 (限制上傳速度為200kb/s)
停止:sh limit.sh stop
#!/bin/bash#a simple example for "tc"#set the paramDELAY=20SPEED=$2FLOW=0#出口網卡NETWORK_CARD=$(ip ro get 115.29.128.27 | grep eth | awk '{print $5}')#伺服器IPIP_ADDRESS=115.29.128.28start () { /sbin/tc qdisc add dev ${NETWORK_CARD} root handle 1: htb default 25 /sbin/tc class add dev ${NETWORK_CARD} parent 1: classid 1:1 htb rate ${SPEED}kbps /sbin/tc qdisc add dev ${NETWORK_CARD} parent 1:1 netem delay ${DELAY}ms ${FLOW}ms /sbin/tc filter add dev ${NETWORK_CARD} parent 1: protocol ip prio 1 u32 match ip dst ${IP_ADDRESS}/32 flowid 1:1}stop () { /sbin/tc qdisc dele dev ${NETWORK_CARD} root}case "$1" in start) start ;; stop) stop ;; *) echo "Usage: `basename $0` {start|stop} speed(kb/s)"esac