IoT边缘 IoTEdge
IoT边缘 IoTEdge
- 最新动态
- 产品介绍
- 快速入门
- 用户指南
- 开发指南
- 最佳实践
- API参考
- SDK参考
- 场景代码示例
-
常见问题
- 概念相关
-
节点管理
- 安装专业版节点异常如何处理?
- 安装专业版节点,执行安装命令时失败,一直提示“edgedaemon not found"?
- 安装专业版节点失败,提示“edge_core has existed”,该如何处理?
- 专业版节点所在机器断网/断电一段时间后恢复,节点模块一直处于“部署中”怎么处理?
- 专业版节点欠费充值后,部署、升级模块仍然报错?
- MQTT设备无法接入边缘节点如何处理?专业版节点所在机器断网/断电一段时间后恢复,节点模块一直处于“部署中”怎么处理?
- 误删除IoTDA上的edge_node/modbus_server产品后,在边缘服务创建节点/添加Modbus设备失败,该怎么处理?
- 边缘节点离线排查指南
- 修改专业版(Docker)或基础版节点的云端日志级别,但没有生效?
- ubuntu系统下节点shell命令兼容性导致的安装失败
- 子设备管理
- 应用管理
- 账号与权限
- Module-SDK
- 视频帮助
- 文档下载
- 通用参考
本文导读
展开导读
链接复制成功!
制作插件包
- 插件包制作。
- 插件包格式要求如下:
插件包结构如下:
app.zip
├── ****.jar //可执行jar文件,必须
├── start.sh //启动脚本 必须文件 当前不提供参数方式启动
└── stop.sh //停止脚本 非必须
- 构建插件包。
以monitor-app为例,在项目打包后得到monitor-app.jar
在monitor-app.jar文件的同目录下创建start.sh,内容如下:function log(){ echo "`date "+%Y-%m-%d %T"`: $1" } log "[INFO] start execut process." #调试时可打开,确认sdk需要的环境能被获取 #echo "${device_id}" > test_enviroment.file pwd #更新环境变量,防止找不到java命令。 source /etc/profile #运行文件在/var/IoTEdge/downloaded-job/run下面 java -jar ./monitor-app.jar > monitor_running.log 2>&1
将monitor-app.jar和start.sh一起压缩得到monitor-app.zip。
注意:
- 插件包升级时,会删除运行目录的所有文件,注意持久化文件的存储。插件包的运行路径为{installer_dir}/IoTEdge/downloaded-job/run/{moduleId}/{appVersion}/。
- 当前插件包的大小限制为最大500M。
- 程序内对于文件的访问使用相对目录访问(因为程序的安装目录是不确定的)。
- 程序不允许包含后台运行的程序,可以包含多级进程,所有程序均为start.sh的子进程。
- 进程压缩包命名规范:英文字母或者数字或者“_”,”.” ,长度不超过64,不允许出现空格。
说明:
- 插件包为一层压缩结构,即插件包的压缩包解压之后直接为start.sh脚本所在目录的结构形式,不能多一层目录。
- start.sh脚本为必须脚本,启动时默认调用该脚本进行启动,当前支持root用户以及非root用户(固定为1000用户,非root需要确定是否能够成功依赖系统库)启动,用户可以在start.sh脚本中自由修改自己的启动方式以及环境变量的修改等。
- stop.sh为非必须的脚本,但是用户如果需要优雅停止的话,需要在该脚本中书写自己进程的停止方式(文件监控、接口调用等)。如果没有该脚本的话,默认对进程组先发送SIGTERM信号,如果进程组对该信号没有处理,达到最大等待时间则发送SIGKILL信号强制停止。整个停止的最大周期为10s。
- 插件包格式要求如下:
- 插件包上传。
- 开通对象存储服务OBS。
进程包上传方式需要开通对象存储服务OBS,请参考对象存储服务 OBS_快速入门。
- 上传进程包。
- 开通对象存储服务OBS。
父主题: 集成ModuleSDK进行进程应用的开发