Ubuntu 20.04 (focal) 和 24.04 (noble) 在 systemd 配置方面有一些区别,主要体现在 systemd 版本升级带来的新特性、默认行为和配置语法的变化上。
主要差异
1. systemd 版本
- Ubuntu 20.04: systemd 245.4-4ubuntu3.19
- Ubuntu 24.04: systemd 255.4-1ubuntu7
- 版本跨度较大,带来了许多新功能
2. 配置语法变化
# 20.04 常见的配置
[Service]
Restart=always
# 24.04 新增或改进的选项
[Service]
# 新增的 Restart 模式
Restart=on-failure:3 # 限制重启次数
RestartSec=5s
3. 安全强化默认值
Ubuntu 24.04 默认启用更多安全特性:
# 24.04 默认或推荐添加
[Service]
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
PrivateTmp=yes
4. 资源管理改进
# 24.04 支持更细粒度的控制
[Service]
MemoryMax=1G
CPUQuota=150%
IOWeight=100
5. 网络命名空间变化
# 24.04 网络配置更灵活
[Service]
PrivateNetwork=yes
IPAccounting=yes
迁移注意事项
需要检查的配置项:
-
StandardOutput/StandardError# 20.04 可能使用 StandardOutput=syslog # 24.04 建议使用 StandardOutput=journal -
环境变量处理
# 24.04 环境文件加载更严格 EnvironmentFile=-/etc/default/myapp # 注意 "-" 前缀表示可选 -
依赖关系
# 24.04 支持更复杂的依赖 Wants=network-online.target After=network-online.target nss-lookup.target -
启动超时
# 24.04 默认超时可能不同 TimeoutStartSec=90s # 明确指定
最佳实践建议
创建兼容的 service 文件:
[Unit]
Description=My Application
Documentation=https://example.com
After=network.target
Requires=network.target
[Service]
Type=simple
User=myapp
Group=myapp
WorkingDirectory=/opt/myapp
ExecStart=/usr/bin/myapp
Restart=on-failure
RestartSec=10
# 安全配置(24.04 推荐)
ProtectSystem=full
ProtectHome=yes
NoNewPrivileges=yes
PrivateTmp=yes
# 资源限制
MemoryMax=512M
CPUQuota=100%
# 日志配置
StandardOutput=journal
StandardError=journal
SyslogIdentifier=myapp
[Install]
WantedBy=multi-user.target
检查命令变化:
# 20.04 常用
systemctl status service
# 24.04 新增功能
systemctl show service # 显示完整属性
systemd-analyze security service # 安全分析
测试建议
-
在 24.04 上测试现有配置
systemd-analyze verify /etc/systemd/system/myapp.service -
检查废弃的指令
journalctl -u myapp --grep="deprecated" -
性能监控
systemd-cgtop # 24.04 改进的资源监控
总结
主要区别在于 systemd 版本升级带来的:
- 更多安全选项默认启用
- 更细粒度的资源控制
- 配置语法的小幅调整
- 更好的日志和监控功能
建议在迁移时:
- 查看 systemd 发行说明
- 使用
systemd-analyze验证配置 - 逐步测试服务在新版本上的运行情况
- 考虑启用新的安全特性增强防护
CLOUD技术笔记