数据下载工作笔记二:wget下载数据自动化脚本

导师的项目需要一大波数据,据称至少要几十个T(吐槽,哪里有那么多数据。。。),于是我开始每天在网上找rdf的数据。大多数数据都在国外的服务器上,联通的PPPoE很不稳定,而且数据集的大小也千差万别,从几个K到数十G,用Wget下载数据每次都需不停地去检查下载状态,输出日志。考虑了一下以后要与这个任务长期为伴了,所以写了几个脚本,让服务器自己下并且负责监控下载状态,一旦有下载失败或者某个数据集下载成功,就短信提醒我。嗯,遇到的问题一一记录在这里,脚本写完之后也贴在这里。

1. 去重:!a[$0]++ "tmp"

tmp中保存了多个记录,每行一个记录。记录有重复。

我将tmp文件中的内容去重后输出到另外一个文件uniq,如果这样写:

  echo ${awk !a[$0]++ "tmp"} > "uniq"

会导致uniq中所有记录都在同一行,如果写成这样:

  cat "tmp" | awk '!a[$0]++' > "uniq"

就保持了原来的格式,每条记录一行。

2. 监控的实现——用msmtp和mutt发送邮件。

安装msmtp:

tar jxf msmtp-1.4.16.tar.bz2
./configure  --prefix=/usr/local/msmtp
make
make install

安装mutt:

tar zxf mutt-1.5.21.tar.gz
./configure
make
make install

配置msmtp:

cd ~
vi .msmtprc

 host smtp.163.com   #你的邮件服务器地址
 tls off   #关闭tls
 auth plain   #设定登录方式
 from youraddress@163.com   #发送Email的邮件地址
 user yourname   #发送Email的用户名
 password yourpassword   #发送Email的用户名密码

3. awk默认分隔符是空格、tab、换行等一切空白符号,使用多个字符组成的字符串做分隔符时,用-F参数指定:-F "string1|string2".

4. 由于脚本之间存在互相调用的关系,但是调用和被调用者的运行时间不一定,所以在调用时要避免因为父进程退出而导致子进程也被同时杀死,用”&“将命令放在后台执行还不够,这样虽说父进程可以不等待子进程执行完毕,但是一旦父进程退出,子进程也跟着被杀死(收到父进程发来的hup信号),所以,在调用子脚本前,使用”nohup“。

转载于:https://www.cnblogs.com/jiama/p/3294270.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值