ini [Service] StandardOutput=journal StandardError=syslog LogLevelMax=debug
配合journalctl的进阶用法:
bash journalctl -u myapp --since "30 min ago" --grep="panic"跨节点故障转移需结合:bash
ExecStartPre=/opt/ha/bin/node-check
EnvironmentFile=/run/cloud-metadata.env
现代服务器运维中 ,
ini
[Unit]
OnFailure=failover-alert@%i.service[Service]
ExecStopPost=/usr/local/bin/health-check.sh配套的failover-alert.service:
ini [Service] Type=oneshot ExecStart=/usr/bin/curl -X POST http://alert-gateway/trigger这种架构实现了:
1. 主服务异常时触发告警
2. ExecStopPost执行最终状态检查
3. 可扩展对接Prometheus等监控系统对于数据库等有依赖顺序的服务:
ini [Unit] Requires=postgresql.service After=network.target postgresql.service
通过依赖关系图可视化检查:
bash systemd-analyze dot myapp.service | dot -Tsvg > deps.svg信号处理陷阱
:某些应用(如Redis)需要特殊配置才能正确处理SIGTERM
ini KillSignal=SIGINT状态持久化
:有状态服务重启前需处理 :
bash ExecStop=/usr/bin/flush-state跨版本兼容:RHEL 7与Ubuntu 22.04的systemd特性差异清单见附录A
ini [Service] MemoryLimit=2G CPUQuota=150%
避免单个服务故障耗尽资源