下载大文件时,需要多次暂停下载。可以使用 来下载大文件wget
。首先开始下载,然后终止wget
,然后通过 恢复下载wget -c
。
我想根据断电、网络不可用等事件多次暂停下载...并希望使用脚本自动执行此操作。所以按Ctrl+C不是一个选项。我知道可以通过kill -STOP "$pid"
暂停一个进程 暂停不应该关闭与网站的连接,它应该等待恢复命令或将带宽限制到非常低的使用率。
我发现这些命令aria2c
使用aria2.sourceforge.net,但我无法成功使用它。这使用了 RPC 方法。我可以在脚本中使用它吗?
aria2.pause(gid)
此方法暂停由 gid 表示的下载。gid 为字符串类型。暂停下载的状态变为已暂停。如果下载处于活动状态,则下载将置于等待队列的第一个位置。只要状态为暂停,下载就不会开始。要将状态更改为等待,请使用 aria2.unpause() 方法。此方法返回暂停下载的 GID。
aria2.unpause(gid)
此方法将 gid 表示的下载状态从暂停更改为等待。这使下载可以重新启动。gid 为字符串类型。此方法返回未暂停下载的 GID。
问题
- 如何暂停(或限制带宽)正在运行的 aria 下载
aria
有没有比在脚本中使用更好的下载器- 脚本中是否可以用 RPC 方法
答案1
为了使其工作你aria2
应该支持选项暂停--pause[=true|false]
。在 中搜索 man aria2c
。它适用于aria2_1.12.0-1_i386[oneric](及更高版本)。
首先启动 RPC 服务器: aria2c --enable-rpc=true
(适用于旧版本aria2c --enable-xml-rpc=true
)
然后使用 RPC 使用http://localhost:6800/jsonrpc
以下示例添加http://example.org/filearia2:在python 控制台输入以下内容
JSON 远程过程调用
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远程过程调用
import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:6800/rpc')
s.aria2.pause('3')
如果您收到如下信息,则说明您的 aria2 版本不支持它。
xmlrpclib.Fault: <Fault 1: 'No such method: aria2.pause'
在使用的版本中aria2c --enable-xml-rpc=true
,可以使用其他选项,例如 adiing 文件等(使用 XML RPC)。
答案2
最简单的方法是,您可以在终端/控制台中使用 Ctrl + C 快捷键暂停下载。它会在内部在同一目录中创建一个扩展名为 .aria2 的临时文件,当您尝试重新下载该文件时,它会从暂停的位置开始。不要使用 Ctrl + Z。