Prozilla 是在Linux环境下多线程下载利器,安装也很简单:
fedora 下运行:
%sudo yum install prozilla

常见用法:
1.按照缺省设置下载(缺省一般为4线程) %proz
url
2.非curses界面,单线程下载(-1),无限重试(-t0) 存储到 ~/mydir %proz
--no-curses -1 -t0 -P~/mydir url
3.curses界面,线程16个(-k=16),无限重试(-t0)
存储到当前目录 %proz -k=16 -t0 url
用法很简单,支持多线程下载,在Linux Shell下使用非常方便,下载速度飞快。
最近用它在Shell中下载 windriver Linux 6.0.0.26更新时发现一个软件设计的bug:
在同时运行两个shell,启动多个proz下载进程时发现,如果不同shell运行proz下载的文件出现名称相同时,
会报文件已存在错误,并且软件不能继续运行,一直提示rusume
或者overwrite选择,并且键盘输入无响应,后分析得出,是proz在下载时在隐藏目录中生成了一个
<文件名>.prz.log文件用于断点续传,当出现两个proz实例下载不同网址的同名文件时,两个实例同时读写
prz.log文件,导致数据出错
修复bug的方法是把prz.log文件名与文件存储目录相关应该可以解决问题,简单的修改下源码,这个应该很简单。修改源码
libprozilla/src/logfile.c 文件的40,160,180,212行:
由原来的:
snprintf(buffer, PATH_MAX, "%s/%s%s.log",
download->log_dir,
download->u.file,
DEFAULT_FILE_EXT);
修改为:
snprintf(buffer, PATH_MAX, "%s/%s%s.log",
download->dl_dir,
download->u.file,
DEFAULT_FILE_EXT);

当然,download_win.h 的55行
void
DL_Window::print_status(download_t * download, int
quiet_mode);
“DL_Window::“一定要去掉的,这个不说大家都知道。
我刚安装的ubuntu12.04,直接编译提示错误,需要安装ncurse5库和g++组件,直接在软件中心里安装就行了。
然后如果程序要安装到/bin目录,则在源码主目录执行:
%sudo ./configure --prefix=/
%make
%sudo make install
顺利的话,proz可执行文件已经在/bin目录里了。
然后就可以多线程,多个shell同时运行proz下载了。哈哈,proz用起来好爽!
|