分享

Linux Shell 环境下的prozilla多线程下载工具使用及BUG修改

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


Linux <wbr>Shell <wbr>环境下的prozilla多线程下载工具使用及BUG修改


常见用法:

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);

Linux <wbr>Shell <wbr>环境下的prozilla多线程下载工具使用及BUG修改


当然,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用起来好爽!          

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多