帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  Linux中自定义服务systemd的相关配置

Linux中自定义服务systemd的相关配置

2026-07-22 17:33:24 516

Linux中自定义服务systemd的相关配置

欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。

systemd 是当前主流 Linux 发行版的默认初始化系统,自定义 service 服务是云运维中最常用的进程托管手段,可实现服务开机自启、异常自动重启、资源限制、日志统一管理等能力,替代传统 nohup 后台运行的不稳定方式,是生产环境部署业务服务的标准操作。

自定义服务文件统一存放于 /etc/systemd/system 目录,后缀为.service,整体分为 Unit、Service、Install 三个配置段,以下为 Java Web 服务的典型配置示例:

[Unit]

Description=Business Web Service

After=network.target syslog.target

 

[Service]

Type=simple

User=appuser

WorkingDirectory=/opt/business-app

ExecStart=/usr/bin/java -Xms1g -Xmx2g -jar app.jar --spring.profiles.active=prod

ExecStop=/bin/kill -s TERM $MAINPID

Restart=always

RestartSec=5

LimitNOFILE=65536

StandardOutput=journal

StandardError=journal

SyslogIdentifier=biz-app

 

[Install]

WantedBy=multi-user.target

其中 After 字段定义服务启动顺序,确保网络与日志服务就绪后再启动业务;Restart=always 表示进程无论以何种状态退出都自动重启,RestartSec 设置重启间隔避免频繁重启;LimitNOFILE 调高文件描述符上限,解决高并发场景下 too many open files 报错。

进阶资源限制配置可防止单个服务占满整机资源,属于生产环境必备配置,在 Service 段添加如下参数即可限制服务最多使用 50% 单核 CPU 与 2G 内存,超过内存上限会被系统强制终止:

CPUQuota=50%

MemoryMax=2G

MemoryHigh=1.8G

服务配置完成后执行systemctl daemon-reload重载 systemd 配置,再执行systemctl enable --now biz-app.service即可实现开机自启并立即启动服务。查看服务运行状态用systemctl status biz-app.service,查看实时日志用journalctl -u biz-app.service -f,筛选最近 1 小时的日志可加参数 --since "1 hour ago"。

配置中有四个高频踩坑点:一是修改 service 文件后必须执行 daemon-reload,否则新配置不会生效;二是 ExecStart 必须使用程序的绝对路径,不能直接使用管道、重定向等 shell 语法,需要时需包一层/bin/bash -c "command | grep xxx";三是 Restart 策略需匹配服务类型,常驻接口服务用 always,一次性任务脚本用 on-failure 仅异常退出时重启;四是禁止用 root 账号运行业务服务,通过 User 参数指定普通用户运行,遵循最小权限原则。

生产环境进阶优化可添加 WatchdogSec 参数配置心跳检测,服务假死无响应时也能自动重启;临时调整配置可使用systemctl edit biz-app.service生成覆盖文件,不修改原始配置便于版本管理。日志层面需配合 journald 配置日志轮转,设置单日志文件大小与保留天数,避免系统盘被日志占满。

 

蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。

更多技术知识,蓝队云期待与你一起探索。

 

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: