如何暂停正在运行的 aria 下载

tot*_*tti 7 bash scripts downloads

下载大文件时,需要多次暂停下载。可以使用 下载大文件wget。首先开始下载,然后 kill wget,然后通过 继续下载wget -c
我想根据电源故障、网络不可用等事件暂停下载太多次……并希望使用脚本自动执行。所以按下Ctrl+C不是一种选择。我知道一个进程可以被暂停kill -STOP "$pid"暂停不应该关闭与网站的连接,它应该等待恢复命令或带宽限制到非常低的使用。

我发现这些命令aria2caria2.sourceforge.net 中使用,但我无法成功使用它。这使用 RPC 方法。我可以在脚本中使用它吗?
aria2.pause(gid)

此方法暂停由 gid 表示的下载。gid 是字符串类型。暂停下载的状态变为暂停。如果下载处于活动状态,则将下载放在等待队列的第一个位置。只要处于暂停状态,就不会开始下载。要将状态更改为等待,请使用 aria2.unpause() 方法。此方法返回暂停下载的 GID。

aria2.unpause(gid)

此方法将 gid 表示的下载状态从暂停更改为等待。这使得下载有资格重新启动。gid 是字符串类型。此方法返回未暂停下载的 GID。

  1. 如何暂停(或限制带宽)已经运行的 aria 下载
  2. 有没有比aria在脚本中使用更好的下载器
  3. 是否可以在脚本中使用 RPC 方法

小智 6

为此,您aria2应该支持选项pause。搜索 --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/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"}'
Run Code Online (Sandbox Code Playgroud)

以下示例暂停 GID 为“3”的下载:

XML RPC

import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:6800/rpc')
s.aria2.pause('3')
Run Code Online (Sandbox Code Playgroud)

如果你得到类似下面的内容,你的 aria2 版本不支持它。

xmlrpclib.Fault: <Fault 1: 'No such method: aria2.pause'
Run Code Online (Sandbox Code Playgroud)

在使用 的版本中,可以使用aria2c --enable-xml-rpc=true其他选项,例如 adiing 文件等(使用 XML RPC)。