- 工信部备案号 滇ICP备05000110号-1
- 滇公网安备53011102001527号
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
- CN域名投诉举报处理平台:电话:010-58813000、邮箱:service@cnnic.cn
欢迎来到蓝队云技术小课堂,每天分享一个技术小知识。
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 配置日志轮转,设置单日志文件大小与保留天数,避免系统盘被日志占满。
蓝队云官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,蓝队云整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。
更多技术知识,蓝队云期待与你一起探索。
售前咨询
售后咨询
备案咨询
二维码

TOP