Columbia 发表于 2011-4-10 10:00:24

实现Transmission排队下载和崩溃后自动恢复

1.首先安装gawk,后面会用到。(我M880内置awk功能不全,所以要安装gawk,如果其他机型可能不需要gawk)
ipkg update
ipkg install gawk

2.编写排队脚本,如下
vi /opt/bin/transmission_queue.sh
按i键盘输入以下内容[*]#!/bin/sh[*]#Created by Wenl[*]#Set the number of the maximum downloading tasks[*]MAXDONLOADING="1"[*]#Set the number of the maximum seeding tasks[*]MAXSEEDING="5"[*]#Set the command[*]COMMAND="transmission-remote 127.0.0.1:9091 --auth=root:toor"[*][*]#Launch transmission if it's down[*]if [ $(ps|grep transmission-daemon|wc -l) -le 1 ]; then[*]/opt/etc/init.d/S50transmission[*]fi[*][*]#Limit the seeding tasks to the setting[*]while [ $($COMMAND -l | grep 100%|grep -v Stopped| wc -l) -gt $MAXSEEDING ][*]do[*]SEED_ID="$($COMMAND -l | grep 100%|grep -v Stopped| head -n 1|gawk '{ print $1; }')"[*]$COMMAND --torrent $SEED_ID --stop > /dev/null[*]sleep 3[*]done[*][*][*]#Free the downloading tasks to the setting[*]while [ $($COMMAND -l|grep -v Stopped|grep -v 100%|grep -v ID|grep -v Sum|wc -l) -lt $MAXDONLOADING ][*]do[*]if [ $($COMMAND -l|grep Stopped|grep -v 100%|grep -v ID|wc -l) -gt 0 ]; then[*]    DOWNLOAD_ID="$($COMMAND -l|grep Stopped|grep -v 100%|grep -v ID|head -n 1|gawk '{ print $1; }')"[*]    $COMMAND --torrent $DOWNLOAD_ID --start > /dev/null[*]    sleep 4[*]else[*]    break[*]fi[*]done[*][*]#Reduce the downloading tasks to the setting[*]while [ $($COMMAND -l|grep -v Stopped|grep -v 100%|grep -v ID|grep -v Sum|wc -l) -gt $MAXDONLOADING ][*]do[*]DOWNLOAD_ID="$($COMMAND -l |grep -v Stopped|grep -v 100%|grep -v ID|grep -v Sum|tail -n 1|gawk '{ print $1; }')"[*]$COMMAND --torrent $DOWNLOAD_ID --stop > /dev/null[*]sleep 4[*]done
复制代码
按esc键输入:wq保存退出。
脚本文件贴这里了,可以直接用。


注意变量COMMAND,请改为你自己的端口号和账号密码。如果未设置鉴权模式,可把参数--auth=root:toor -l去掉。
MAXDONLOADING="1" 是设定最大下载数,默认为1
MAXSEEDING="5" 是设定最大做种数,默认为5
可以自行更改这2个参数。

3. 将这段脚本放入cron让其定时执行
没有安装cron的先用ipkg安装,指令如下
ipkg update
ipkg install cron
安装好后执行:
crontab -e
加入这一行
*/30 * * * * /opt/bin/transmission_queue.sh
按esc输入:wq退出。
默认是30分钟执行一次。如果想修改间隔时间,改*/30,把30改成其他的就可以了,默认是分钟。

在transmission remote添加所有任务都全部暂停住,只留一两个下载的。之后控制就由脚本自动完成。

4. 为了方便开关队列下载,写两个脚本
vi /opt/bin/tr_queue_stop[*]#!/bin/sh[*]mv /opt/bin/transmission_queue.sh /opt/bin/transmission_queue.sh.bak
复制代码
vi /opt/bin/tr_queue_start[*]#!/bin/sh[*]mv /opt/bin/transmission_queue.sh.bak /opt/bin/transmission_queue.sh
复制代码
附上可执行权限
chmod +x /opt/bin/tr_queue_stop
chmod +x /opt/bin/tr_queue_start
以后想打开排队下载就执行指令:tr_queue_start
想关闭这个功能就执行:tr_queue_stop

zhangweibo 发表于 2011-4-10 11:16:15

这个脚本比较适合高清播放机或者下载机,因为硬件不强,造成负载太大,会经常崩溃,一般的台式机或者服务器,或者vps,一般不会崩溃,我在我的vps做的tr,已经43天没崩溃了

gaodi0107@2 发表于 2011-4-15 10:38:15

回复 2# zhangweibo

有没有能实现自定义先后下载顺序的插件?

ffrank@2 发表于 2011-4-15 10:48:14

我的NAS用的是Transmission,进来学习一下。但貌似我的从没崩溃过

hothduser 发表于 2011-4-15 14:28:36

呃,用路由器挂,貌似从来没崩溃过。。。。。
估计崩溃也是out of memory吧~

why871 发表于 2011-4-16 21:34:48

wzr-hp-g300nh+openwrt(trunk)+transmission,24/7 10-20连接 一直很稳定
页: [1]
查看完整版本: 实现Transmission排队下载和崩溃后自动恢复