Skip to main content

Systemd 服务规范

服务单元 ID 来自 config.ini.system_id

{
"system_id": "<system_id>"
}

最终系统服务必须是:

<system_id>.service

应用安装目录内保留:

/usr/local/<app_id>/init.d/<system_id>.service

标准服务文件:

标准服务文件(含安全加固):

[Unit]
Description=<service_description>
After=network.target
StartLimitBurst=5
StartLimitIntervalSec=60

[Service]
Type=simple
User=<appid>
Group=<appid>
WorkingDirectory=/usr/local/<appid>
ExecStart=/usr/local/<appid>/bin/<binary_name>
EnvironmentFile=/usr/local/<appid>/<appid>.env
TimeoutStartSec=30
TimeoutStopSec=10
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/var/lib/<appid> /var/log/<appid>
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

Systemd 指令参考:

指令是否必填说明
User<appid>✅ 是以专用非 root 用户运行服务
Group<appid>✅ 是以专用组运行服务
WorkingDirectory/usr/local/<appid>✅ 是服务的工作目录
NoNewPrivilegestrue✅ 是阻止权限提升
ProtectSystemstrict✅ 是将 /usr、/boot、/etc 挂载为只读
ProtectHometrue✅ 是隐藏 /home 目录
TimeoutStartSec30✅ 是服务启动超时(秒)
TimeoutStopSec10✅ 是优雅停止超时(秒)
AmbientCapabilitiesCAP_NET_BIND_SERVICE条件仅在绑定 1024 以下端口时需要
ReadWritePaths/var/lib/<appid> /var/log/<appid>✅ 是显式声明可写路径
LimitNOFILE65536建议文件描述符限制
StartLimitBurst5建议间隔内最大重启次数
StartLimitIntervalSec60建议重启限制间隔(秒)
重要

服务单元配置文件禁止配置 RestartRestartSec 参数。应用的启动、停止和重启生命周期由 TOS 应用中心统一管理,开发者配置的自动重启策略可能与平台管理逻辑冲突,导致应用状态不一致。StartLimitBurstStartLimitIntervalSec 保留不受影响。