Linux Shell在同城用户服务中的应用

2022-12-28 01:57许竹霞钟斌斌
气象水文海洋仪器 2022年1期
关键词:气象服务器天气

徐 娟,刘 洋,许竹霞,钟斌斌

(甘肃省气象信息与技术装备保障中心,兰州 730020)

0 引言

气象数据种类丰富,包含地面、高空、数值预报、雷达、卫星等14大类共300余种,除应用于天气预报、气候预测、气象科研领域外,气象数据在农业、能源、交通、环境、地质、医疗、建筑、防灾减灾等领域也有着十分重要的指导意义[1-5]。中国地面气象站包括地面国家级自动气象站和各省的区域级自动气象站,站点密集,观测频次高,中国地面气象资料在天气监测、气象预报和服务中发挥着重要作用。探空站相较于地面站分布稀疏,探空数据在气旋、锋面、飑线等天气系统位置和强度的分析判断、天气预报、人工影响天气、防灾减灾中应用广泛[6]。FY-4A卫星具有对天气气候和空间环境的探测能力且能够在静止轨道上同时实现红外高光谱垂直探测和闪电探测,在台风飑线天气监测、沙尘监测、航空服务的应用中作用突出[7-9]。天气雷达在对突发性、灾害性的中小尺度天气系统监测和预警、降水定量估计等天气分析中被广泛应用[10,11]。欧洲中期数值预报中心ECMWF资料和美国NCEP再分析资料普遍应用于大气环境预测、强对流天气发展演变分析中[12,13]。同城用户是气象数据共享服务的重要对象,考虑网络带宽、用户数据环境和服务的特殊性,气象数据服务采用定制化方案,按需提供,必要时将气象数据进行二次加工后对接用户业务系统。Shell是一种简单、可移植性强的脚本编程语言,Linux系统由于其具有较高的开放性、安全性和稳定性在计算机服务领域普遍应用,将shell脚本部署在Linux服务器,可实现脚本的定时高效执行,显著提高服务效率,简化运维工作量,在各领域已有成熟的应用[14-17]。

1 用户需求

在用户服务器或PC机部署MICAPS4客户端作为气象数据展示和分析的基础平台,将MICAPS4处理后的气象数据通过分布式高速缓存提供调阅服务,通过MICAPS4提供服务的产品包括中国地面观测和高空探测的实况资料、地面高空的分析产品、西北区域多普勒雷达标准格式基数据、欧洲中心ECMWF数值预报产品和美国NCEP再分析产品等。另有用户对中国地面国家气象站小时Z文件数据、中国地面区域站(包括单雨量站)质控前数据有所需求,但由于气象数据格式化标准化建设的推进,中国国家站地面气象数据已经实现了从新Z文件向bufr标准格式的切换,中国地面区域站的数据也接收不到质控前格式数据的广播分发。为满足用户需求,文章对中国地面国家站标准格式气象数据(bufr格式)和中国地面区域站质控后气象数据进行了二次加工处理,并将最终处理产品定时推送至用户端服务器。

2 程序部署

遵循气象信息业务现代化、集约化、标准化建设的要求和原则,在甘肃省气象局Vmware虚拟化资源池中搭建虚拟服务器,安装SUSE Linux Enterprise Server 11 SP3(x86_64)操作系统,服务器配置16个CPU,16 G内存和600 G硬盘。采用软连接方式链接数据源目录和程序处理后的数据归档目录,归档目录要求开放写入权限。配置网络和YUM源,打开程序运行所需的相关服务,此外,软件安装在本地盘,服务器时区设置为世界时(UTC)。

2.1 数据处理流程

数据处理流程为程序从挂载的NAS存储缓存气象数据至本地目录,格转子程序进行数据自动批量格式转换,并将格转后的中国地面国家站数据新Z文件回写至NAS进行存储,中国地面区域站转换后数据则落盘本地目录,最后调用数据传输程序将生成的气象文件发送至目标服务器,程序运行的全流程信息详细记录在程序日志文件中。

2.2 格式转换功能实现

中国地面国家级自动气象站标准格式气象数据向新Z文件的批量转换,通过将缓存文件和全路径批量传入格式转换程序实现,关键代码如下:

do

cd/tool/format_change/Bufr2NewzTest/

./bufr_format_change_test ${path}/temp_aws_burf_hour/${file##*/}

/tool/format_change/Bufr2NewzTest/Z_SURF*.txt/bclz/zdz/aws_txt_h/${file_time}/

mv./Z_SURF_C*.txt/bclz/zdz/aws_txt_h/${time}/

done

中国地面区域站资料的二次加工以单个打包文件为单位进行,单雨量站打包文件的文件名为“Z_SURF_C_CCCC-REG_YYYYMMDDHHmmss_O_AWS-PRF_FTM_PQC.txt”,多要素区域站打包文件的文件名为“Z_SURF_C_CCCC-REG_YYYYMMDDHHmmss_O_AWS_FTM_PQC.txt”,其中CCCC为各省的代码,比如甘肃省的CCCC码为BCLZ;YYYYMMDDHHmmss表示文件生成的时间,例如20210723120000表示该文件生成于世界时2021-07-23T12:00:00。单雨量站和多要素区域站打包文件除文件名有差异,数据包要素内容均以站号开头以“=”结束,每一个数据包有1个或多个站点数据,整个数据包文件以“NNNN”结尾,可以看出质控后的数据在文件名和文件内容都有明显的“QC”质控码标识。

实现质控后数据向质控前数据的格式转换,需去除每一站的质控码所在行并添加站点结束标识。关键代码如下:

do

file_name=${file##*/}

grep-n ′=′ ${local_process_path}/${file_name}|awk ′{print $1}′|cut-d ′:′-f1 > temp_prf.tmp

while read line

do

sed-i ″$((${line}-1))s/$/=/″ ${local_process_path}/${file_name}

done < temp_prf.tmp

sed-i ″/${reg_qc_code}/d″ ${local_process_path}/${file_name}

sed-i ′/^U/s/000$//g′ ${local_process_path}/${file_name}

sed-i ′/^Y/s/000$//g′ ${local_process_path}/${file_name}

done

经格式转换得到的区域站质控前数据文件名相较处理前少了“_PQC”字段,文件内容没有了从“QC”至“=”前的部分。

2.3 数据推送

经格转后的气象数据采用主动推送的方式向用户端分发。需要目标服务器开通ftp服务和相应的端口,用户提供IP地址、端口号和ftp账户信息以及开放写权限的数据存储目录。为同城用户提供服务的分布式MICAPS4部分文件数据也来自Shell程序的主动分发。

2.4 任务执行

不同气象数据的采集、生成和上传具有各自的时间规律,结合Linux定时任务计划和数据加锁机制配置Shell程序执行规则,有效提高了系统性能和程序执行效率,保障了数据传输的完整性。

2.5 程序日志

Shell程序执行的全流程信息均在程序日志中进行了记录,为系统运维人员进行问题排查和应急处理提供了依据,程序依据日志记录判断文件是否经过处理,避免了因程序的重复执行造成资源占用和浪费。

3 结束语

Shell程序功能强大,部署在可靠、安全、稳定的Linux平台,结合定时任务计划,在气象数据分发、气象数据二次加工处理中发挥着重要作用。气象数据种类众多,支撑的业务系统和服务用户广泛,通过Shell程序和虚拟化服务器进行整合和统一管理,节约了程序开发成本,更减轻了系统运维人员的工作负担,提高了气象数据的服务时效和数据服务质量。

猜你喜欢
气象服务器天气
气象树
专栏:红色气象 别有洞天
天气冷了,就容易抑郁吗?
谁是天气之子
盛暑天气,觅得书中一味凉
PowerTCP Server Tool
BlackJumboDog
Weather(天气)
2018年全球服务器市场将保持温和增长
大国气象