NCEP
What’s Learned
- 自動批次執行排程、報錯、及監控方式的設定。
- 修改一個其他作者寫的
python27
的程式- 讓
python
程式從檔案系統中讀取檔名、解析日期 - 使用
urllib2
+ cookielib
下載 - 日期的計算
- 字串的連接、管理
背景
- NCEP (National Centers for Environmental Prediction)是美國海洋大氣總署NOAA轄下有關環境議題的預測研究及作業中心。所提供全球觀測數據是大氣動力模式必須之初始及邊界條件。
- NCEP提供下載的
python
腳本,早期是python27
,現已更新至python37
。此處依據的是舊版腳本。
批次執行
- 3項下載依序執行。
- 不建議同時多次登入NCEP網站,會引發網站保護機制,列入黑名單。
- 腳本說明
- 每天登入網站,因此需刪除舊的登入許可檔
auth.rda.ucar.edu
- 依序執行再分析數據(ds.083.2)、地面觀測(ds461.0)、以及探空觀測(ds351.0)等3項下載。
- 如果下載成功、每天將會增加12個檔案(3項每天4個)。
- 檢查結果,如果
log
檔內不是12個,則呼叫macOS
的osascript
程式,印出錯誤訊息。 - 因隔天程式還是會補上遺失的檔案,檔案個數仍然不是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