跳到內容
返回官網

原生應用程式與程式集

工業現場有大量以傳統方式執行的程式:擷取指令碼、協定轉換常駐程式、第三方二進位。過去它們靠手工啟動、各自為戰,故障了無人知曉。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 <程式集服務名> # 停止
  • 傳統工業程式:擷取、控制、通訊常駐程式的現代化管理;
  • 指令碼與工具鏈:將臨時指令碼納入正式管理,異常自我修復;
  • 混合架構:與容器應用程式在同一套編排體系中協作工作。
場景 推薦
需要直接呼叫硬體、即時性要求高 原生應用程式(程式集)
已有傳統程式資產、遷移成本敏感 原生應用程式(程式集)
多語言、多依賴、需要環境隔離 容器應用程式
現代微服務架構、快速迭代 容器應用程式