zoukankan      html  css  js  c++  java
  • 每天定时下载gfs资料shell脚本

    在数值天气预报应用中,经常需要下载一些输入资料,美国ncep的gfs资料是常用的一种分析场资料。业务运行,需要每天定时从ncep网站上下载,所以写了一个Shell脚本实现这一功能。脚本内容如下:

    #!/bin/bash
    
    export LANG=C
    
    # date setting
    if [ $# -eq 0 ];then
      echo "+++++ Error hours, please check argument! +++++"
      echo "  Usage: $0 00/06/12/18"
      exit 1
    else
      hh=$1
      shift
    fi
    
    if [ $hh -ne 00 -a $hh -ne 06 -a $hh -ne 12 -a $hh -ne 18 ];then
      echo "+++++ Error hours, please check argument! +++++"
      echo "  Usage: $0 00/06/12/18"
      exit 1
    fi
    
    if [ $# -ne 0 ];then
      rundate=$1
    else
      rundate=`date -u +%Y%m%d`
    fi
    
    gdate=$rundate
    
    # download gfs files to tmp dir
    tmppath=/dev/shm/gfs/${gdate}${hh}
    rm -rf $tmppath && mkdir -p $tmppath
    cd $tmppath
    for i in `seq 0 6 72`
    do
      filepath=ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.${gdate}${hh}
      filename=gfs.t${hh}z.pgrb2f`printf %02d $i`
      # use axel as first chosen downloader, proz and wget as second and third
      /usr/local/bin/axel -n 8 -v  ${filepath}/${filename} >& log.${filename}
      if ! grep "^Downloaded.*megabytes" log.${filename} ;then
        echo "download with axel unsuccessfully! redownload with prozilla"
        /usr/local/bin/proz -k=8 -r -f --no-curses --no-netrc --no-getch -v ${filepath}/${filename} >& log.${filename}
        if ! grep "All Done" log.${filename} ;then
          /usr/bin/wget ${filepath}/${filename} >& log.${filename}
        fi
      fi
    done
    
    gfspath=/data/gfs/${gdate}${hh}
    test -d $gfspath || mkdir -p $gfspath
    
    # move downloaded gfs files to final dir
    cd $tmppath
    for i in `seq 0 6 72`
    do
      filename=gfs.t${hh}z.pgrb2f`printf %02d $i`
      cp $filename $gfspath && rm -f $filename
    done
    
    echo
    echo "GFS data files downloaded successfully!"
    date
  • 相关阅读:
    卡牌分组
    css字体样式+文本样式
    jQuery---on注册事件的2种方式
    css3神奇的背景控制属性+使用颜色过渡实现漂亮的渐变效果
    js Dom为页面中的元素绑定键盘或鼠标事件
    ES6中Set和WeakSet
    Vue之计算属性Computed和属性监听Watch,Computed和Watch的区别
    JS数据类型和堆栈+变量比较和值的复制+参数传递和类型检测
    复习node中加载静态资源--用express+esj
    种花问题
  • 原文地址:https://www.cnblogs.com/ibnode/p/3573250.html
Copyright © 2011-2022 走看看