跳转到内容
返回官网

原生应用与程序集

工业现场有大量以传统方式运行的程序:采集脚本、协议转换守护进程、第三方二进制。过去它们靠手工启动、各自为战,故障了无人知晓。JelinaOS 将它们纳入统一的声明式管理体系——程序集(ProgramSet),让传统程序也拥有“配置即管理、异常自愈、随系统自启”的现代化体验。

程序集是一组非容器应用的集合,每个应用通过声明式配置描述:

  • 启动方式:命令、工作目录、运行身份;
  • 程序来源:程序包通过发布配置中的下载地址获取;
  • 运行策略:重启策略、环境变量、停止信号;
  • 依赖关系:启动顺序、互斥关系、强/弱依赖;
  • 守护能力:重启限制、退出后保持、前后置命令。

配置好后,应用由系统统一管理,无需手工编写启动脚本。

程序集的配置在云端或本地管理接口完成,设备代理负责执行:

入口 适用场景 说明
云端发布(推荐) 接入 JelinaCloud 在创建发布版本(Release)时声明程序集,随发布批量下发到设备
本地管理接口 本地 / 隔离环境 通过设备本地管理接口下发目标配置

以下为云端发布中程序集的声明示例(程序包通过下载地址分发):

programs:
collector:
uri: http://files.example.com/collector/collector.tar.gz # 程序包下载地址
command: collector --config /data/collector.conf
running: true
restart: always
environment:
SITE_ID: plant-01
working_directory: /opt/collector
user: root
  • command:启动命令(必填);
  • running:是否运行,默认 true;
  • restart:重启策略,always 表示异常退出后自动重启;
  • environment:环境变量;
  • working_directory:工作目录。
配置 说明
uri 程序包下载地址
command 启动命令(必填)
running 是否运行,默认 true
restart 重启策略:no / on-failure / always 等
environment 环境变量
working_directory 工作目录
user / group 运行身份
after / before、wants / requires、conflicts 依赖与顺序
start_limit_*、remain_after_exit、exec_start_* 等 守护与恢复行为

完整字段说明见 docker-compose 兼容与拓展。

高级配置:开机自启与条件检查

Section titled “高级配置:开机自启与条件检查”
programs:
myapp:
command: run.sh
restart: always
Install:
WantedBy: multi-user.target # 开机自启
Unit:
ConditionPathExists: /data/app/config.json # 条件检查:配置文件存在才启动

程序集应用由设备代理统一托管,映射为系统服务运行。查看与操作服务时,服务名遵循系统命名规则(可通过设备状态命令查看实际服务名):

Terminal window
systemctl status <程序集服务名> # 查看状态(服务名以设备显示为准)
systemctl restart <程序集服务名> # 重启
systemctl stop <程序集服务名> # 停止
  • 传统工业程序:采集、控制、通信守护进程的现代化管理;
  • 脚本与工具链:将临时脚本纳入正式管理,异常自愈;
  • 混合架构:与容器应用在同一套编排体系中协同工作。
场景 推荐
需要直接调用硬件、实时性要求高 原生应用(程序集)
已有传统程序资产、迁移成本敏感 原生应用(程序集)
多语言、多依赖、需要环境隔离 容器应用
现代微服务架构、快速迭代 容器应用