上期我们说到sysv的规范,创建以及示例,那么我们今天就来讲讲Systemd的原生服务配置。
为何要迁移到Systemd原生服务?
尽管规范化的SysV脚本可临时解决问题,但可能存在以下缺陷:
Systemd原生服务配置最佳实践
1. Systemd服务文件基础
创建/etc/systemd/system/my_service.service。
[Unit]Description=My Custom ServiceAfter=network.target syslog.target # 明确依赖顺序Requires=network.target # 硬依赖(失败则终止)
[Service]Type=simple # 主进程类型(simple/forking)ExecStart=/usr/bin/my_daemon --config /etc/my.confExecStop=/bin/kill -TERM $MAINPID # 可选,默认发送SIGTERMRestart=on-failure # 自动重启策略User=appuser # 降权运行Group=appgroupEnvironment=DEBUG=false # 环境变量
[Install]WantedBy=multi-user.target # 默认启用级别
1.1 服务类型(Type)

1.2 自动重启策略(Restart)
Restart=always # 无条件重启Restart=on-failure # 退出码非0时重启RestartSec=5 # 重启前等待时间
1.3 资源限制
MemoryLimit=512M # 内存限制CPUQuota=80% # CPU时间配额LimitNOFILE=65535 # 文件描述符数
1.4 日志管理
StandardOutput=journal # 默认输出到JournaldStandardError=journal# 或自定义日志文件(需配合日志轮转)StandardOutput=file:/var/log/my_service.log
2. Systemd服务启动
那么,当我已经创建好了/etc/systemd/system/my_service.service并写好了内容,我该如何启动这个服务?
2.1 重载Systemd配置
sudo systemctl daemon-reload
必须操作:跳过此步骤会导致Systemd无法识别新服务配置!
2.2 启动服务
sudo systemctl start my_service
服务名规则:my_service对应/etc/systemd/system/my_service.service的文件名(无需加.service后缀)。
2.3 检查服务状态
systemctl status my_service
关键输出解读:
my_service.service - My Custom Service
Loaded: loaded (/etc/systemd/system/my_service.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-10-10 1500 UTC; 5s ago # 服务已成功运行
Main PID: 1234 (my_daemon)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/my_service.service
└─1234 /usr/bin/my_daemon --config /etc/my.conf
2.4 设置开机自启
sudo systemctl enable my_service
输出示例:
Created symlink /etc/systemd/system/multi-user.target.wants/my_service.service → /etc/systemd/system/my_service.service
2.5 实时查看服务日志
journalctl -u my_service -f
u:过滤特定服务的日志
f:实时跟踪(类似tail -f)
2.6 停止服务
sudo systemctl stop my_service
2.7 重启服务
sudo systemctl restart my_service
3. 完整流程示例
# 创建服务文件sudo nano /etc/systemd/system/my_service.service
# 写入配置内容并保存后...sudo systemctl daemon-reloadsudo systemctl start my_servicesudo systemctl enable my_servicesystemctl status my_service
总结:SysV与Systemd对比差异1. 服务启动方式
2. 服务管理模型
3. 依赖关系处理
4. 优缺点总结

EM系列储能边缘智能网关
EM系列储能边缘智能网关是ZLG致远电子专为新能源储能系统设计的一款高性能、多接口通讯管理设备,可在储能系统应用中作为边缘EMS(能源管理系统)总控、通讯管理机、规约转换器或BAU(电池管理总控)使用。该系列产品集成丰富的外设接口,支持各类BMS、PCS、空调、电表、屏显等设备的通讯传输,且软件上支持RT-Linux、Ubuntu等操作系统,支持IEC-61850/IEC-104/EtherCAT等专用协议,可广泛满足各类储能系统的本地能源管理应用需求。
全部0条评论
快来发表一下你的评论吧 !