4. shell编程接口
4.1 模块脚本编写规范
4.2 标准输入输出接口
4.3 文件交换接口规范
4.4 时间戳与性能统计
模块内脚本通常以shell实现。要使用内置函数,容器内需安装jq以支持json解析。
以下是debian/ubuntu类镜像的Dockerfile中,安装jq的示例代码:
RUN apt update \
&& apt-get install -y jq \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
4.5 常用scalebox内置函数
4.5.1 scalebox::json_val
功能:从json中提取参数值 参数列表: json文本 json字段名 返回:json字段值(字符串)
4.5.2 scalebox::task_header
功能:从json中提取消息头的值,若不存在,则从环境变量中提取值(环境变量名为消息头对应的全大写字母) 参数列表: json文本 json字段名:以消息字母、下划线定义 返回:参数值(字符串)
4.5.3 scalebox::json_parse
功能:将json字符串映射为hash table 参数列表: json文本 bash的hashtable:返回值 返回:无
4.5.4 path::host_path
参数:容器内dir名 返回:容器可访问的主机目录
4.5.5 path::size
参数:容器可访问的主机目录 返回:该目录字节数
4.6 内置函数的用法示例
#!/usr/bin/env bash
source /usr/local/lib/scalebox/functions.sh
my_header=$(scalebox::task_header "$2" "my_header")
path_in_container="mypath"
host_dir=$(path::host_path ${path_in_container})
4.7 容器内可访问的数据目录
容器内缺省可访问外部目录包括:
/tmp:本地临时文件目录
/dev/shm:本地缓存目录(tmpfs)
/cluster_data_root:集群数据根目录(在集群定义中,用
data_root定义)/local_data_root:计算节点本地根目录
要访问其它目录,需要在模块定义的volumes中定义映射关系。