如何暂停正在运行的咏叹调下载
下载大文件时,需要多次暂停下载。 可以使用wget
下载大文件。 首先开始下载,然后杀死wget
,然后通过wget -c
继续下载。
我想暂停下载太多次,具体取决于电源故障,网络不可用等等事件……并希望使用脚本自动执行下载。 所以按Ctrl + C不是一个选项。 我知道一个进程可以被kill -STOP "$pid"
暂停kill -STOP "$pid"
暂停不应该关闭与网站的连接,要么它应该等待resume命令,要么限制带宽限制到非常低的使用。
我在aria2.sourceforge.net中使用aria2c
找到了这些命令,但我无法成功使用它。 这使用RPC方法。 我可以在脚本中使用它吗?
aria2.pause(gid)
此方法暂停gid表示的下载。 gid是string类型。 暂停下载的状态将暂停。 如果下载处于活动状态,则下载将置于等待队列的第一个位置。 只要状态暂停,就不会开始下载。 要将状态更改为等待,请使用aria2.unpause()方法。 此方法返回暂停下载的GID。
aria2.unpause(gid)
此方法将gid表示的下载状态从暂停更改为等待。 这使下载符合重新启动条件。 gid是string类型。 此方法返回未暂停下载的GID。
题
- 如何暂停(或限制带宽)已经运行的咏叹调下载
- 在脚本中是否有比
aria
更好的下载器 - 可以在脚本中使用更好的RPC方法
为此,您的aria2
应该支持选项暂停 。 在man aria2c
搜索--pause[=true|false]
。 它适用于aria2_1.12.0-1_i386 [oneric](及更高版本)。
首先启动RPC服务器: aria2c --enable-rpc=true
(旧版本aria2c --enable-xml-rpc=true
)
然后使用http://localhost:6800/jsonrpc
使用RPC
以下示例将http://example.org/file添加到aria2:在python控制台中键入以下内容
JSON RPC
import urllib2, json jsonreq = json.dumps({'jsonrpc':'2.0', 'id':'qwer', 'method':'aria2.addUri', 'params':[['http://example.org/file']]}) c = urllib2.urlopen('http://localhost:6800/jsonrpc', jsonreq) c.read() '{"id":"qwer","jsonrpc":"2.0","result":"2089b05ecca3d829"}'
以下示例暂停下载,其GID为“3”:
XML RPC
import xmlrpclib s = xmlrpclib.ServerProxy('http://localhost:6800/rpc') s.aria2.pause('3')
如果你得到的东西如下,你的版本的aria2不支持它。
xmlrpclib.Fault:
在使用aria2c --enable-xml-rpc=true
,可以使用其他选项,例如adiing文件等(使用XML RPC)。
最简单的是你可以在终端/ konsole中使用Ctrl + C快捷键来暂停下载。 在内部,它在扩展名.aria2的同一目录中创建一个临时文件,当您尝试重新下载文件时,它会从暂停的位置开始。 并且不要使用Ctrl + Z.