Link Search Menu Expand Document

NCEP

What’s Learned

  • 自動批次執行排程報錯、及監控方式的設定。
  • 修改一個其他作者寫的python27的程式
    • python程式從檔案系統中讀取檔名、解析日期
    • 使用urllib2 + cookielib下載
    • 日期的計算
    • 字串的連接、管理

背景

  • NCEP (National Centers for Environmental Prediction)是美國海洋大氣總署NOAA轄下有關環境議題的預測研究及作業中心。所提供全球觀測數據是大氣動力模式必須之初始及邊界條件。
    • 此處介紹自動下載作業的細節,包括再分析數據(ds.083.2)、地面觀測(ds461.0)、以及探空觀測(ds351.0)等3項。
  • NCEP提供下載的python腳本,早期是python27,現已更新至python37。此處依據的是舊版腳本。

批次執行

  • 3項下載依序執行。
  • 不建議同時多次登入NCEP網站,會引發網站保護機制,列入黑名單。
  • 腳本說明
    • 每天登入網站,因此需刪除舊的登入許可檔auth.rda.ucar.edu
    • 依序執行再分析數據(ds.083.2)、地面觀測(ds461.0)、以及探空觀測(ds351.0)等3項下載。
    • 如果下載成功、每天將會增加12個檔案(3項每天4個)。
    • 檢查結果,如果log檔內不是12個,則呼叫macOSosascript程式,印出錯誤訊息。
    • 因隔天程式還是會補上遺失的檔案,檔案個數仍然不是12個,所以還是會再報錯。但第三天報錯就一定要人工檢查、修正錯誤。
$ cat /Users/WRF4.1/NCEP/fus.cs
cd /Users/WRF4.1/NCEP
if [ -e auth.rda.ucar.edu ];then rm -f auth.rda.ucar.edu;fi
./ff.py
./uu.py
./ss.py
n=$(grep done crontab_log.txt|wc -l)
if ! [ $n == 12 ];then 
  d=$(date "+%Y/%m/%d")
  /usr/bin/osascript -e 'tell app "System Events" to display dialog "Something wrong in fus.cs @'$d' !"' &
fi

自動執行

  • 設計夜間21:00進行下載,crontab如下:
    crontab -l|grep fus
    0 21  *  *  * /Users/WRF4.1/NCEP/fus.cs &> /Users/WRF4.1/NCEP/crontab_log.txt 2>&1
    

Reference

  • G. T. Wang, Linux 設定 crontab 例行性工作排程教學與範例,G. T. Wang, 2019/06/28
  • PengboGai, Mac OS X 执行osascript命令, jianshu, 2018.07.18
  • akuox, linux date 指令用法@ 老人最愛碎碎念:: 隨意窩Xuite日誌, Xuite, 2009-04-06
  • m157q, Python 中讓 urllib 使用 cookie 的方法, blog.m157q,07 January 2018
  • Here,2021-11-27 10:20:07

Table of contents