工業現場有大量以傳統方式執行的程式:擷取指令碼、協定轉換常駐程式、第三方二進位。過去它們靠手工啟動、各自為戰,故障了無人知曉。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 “與容器應用程式的選擇”| 場景 | 推薦 |
|---|---|
| 需要直接呼叫硬體、即時性要求高 | 原生應用程式(程式集) |
| 已有傳統程式資產、遷移成本敏感 | 原生應用程式(程式集) |
| 多語言、多依賴、需要環境隔離 | 容器應用程式 |
| 現代微服務架構、快速迭代 | 容器應用程式 |