工业现场有大量以传统方式运行的程序:采集脚本、协议转换守护进程、第三方二进制。过去它们靠手工启动、各自为战,故障了无人知晓。JelinaOS 将它们纳入统一的声明式管理体系——程序集(ProgramSet),让传统程序也拥有“配置即管理、异常自愈、随系统自启”的现代化体验。
什么是程序集
Section titled “什么是程序集”程序集是一组非容器应用的集合,每个应用通过声明式配置描述:
- 启动方式:命令、工作目录、运行身份;
- 程序来源:程序包通过发布配置中的下载地址获取;
- 运行策略:重启策略、环境变量、停止信号;
- 依赖关系:启动顺序、互斥关系、强/弱依赖;
- 守护能力:重启限制、退出后保持、前后置命令。
配置好后,应用由系统统一管理,无需手工编写启动脚本。
程序集的配置在云端或本地管理接口完成,设备代理负责执行:
| 入口 | 适用场景 | 说明 |
|---|---|---|
| 云端发布(推荐) | 接入 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: rootcommand:启动命令(必填);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 # 条件检查:配置文件存在才启动程序集应用由设备代理统一托管,映射为系统服务运行。查看与操作服务时,服务名遵循系统命名规则(可通过设备状态命令查看实际服务名):
systemctl status <程序集服务名> # 查看状态(服务名以设备显示为准)systemctl restart <程序集服务名> # 重启systemctl stop <程序集服务名> # 停止- 传统工业程序:采集、控制、通信守护进程的现代化管理;
- 脚本与工具链:将临时脚本纳入正式管理,异常自愈;
- 混合架构:与容器应用在同一套编排体系中协同工作。
与容器应用的选择
Section titled “与容器应用的选择”| 场景 | 推荐 |
|---|---|
| 需要直接调用硬件、实时性要求高 | 原生应用(程序集) |
| 已有传统程序资产、迁移成本敏感 | 原生应用(程序集) |
| 多语言、多依赖、需要环境隔离 | 容器应用 |
| 现代微服务架构、快速迭代 | 容器应用 |