Linux系统服务配置指南
1. 系统服务基础概念
Systemd是现代Linux系统的服务管理系统,用于启动、停止和管理系统服务。主要特点:
- 并行启动服务,加快系统启动速度
 - 按需激活服务
 - 服务依赖关系管理
 - 日志集成
 
2. 服务配置文件详解
Systemd服务配置文件通常位于:
/etc/systemd/system/(系统管理员创建的本地服务)/usr/lib/systemd/system/(软件包安装的服务)
配置文件基本结构:
[Unit]
Description=服务描述
After=依赖服务
[Service]
Type=服务类型
User=运行用户
WorkingDirectory=工作目录
ExecStart=启动命令
Restart=重启策略
[Install]
WantedBy=目标
主要参数说明:
Type:simple(默认)、forking、oneshot等Restart:no、on-success、on-failure、always等WantedBy:指定服务所属的运行级别
3. 常用服务管理命令
# 重新加载服务配置
systemctl daemon-reload
# 启用服务(开机自启)
systemctl enable 服务名
# 禁用服务
systemctl disable 服务名
# 启动服务
systemctl start 服务名
# 停止服务
systemctl stop 服务名
# 重启服务
systemctl restart 服务名
# 查看服务状态
systemctl status 服务名
4. 游戏服务器服务配置示例
4.1 FLServer 服务配置
[Unit]
Description=FLServer 游戏服务
After=mysqld.service
[Service]
Type=simple
Restart=always
User=root
WorkingDirectory=/home/game/Server/
ExecStart=/home/game/Server/FLServer
RestartSec=1
StandardOutput=append:/home/game/Server/log/FLServer.log
StandardError=append:/home/game/Server/log/FLServer-err.log
[Install]
WantedBy=multi-user.target
配置说明:
- 服务将在MySQL服务启动后启动
 - 使用root用户运行(生产环境建议使用专用用户)
 - 工作目录设置为游戏服务器目录
 - 输出日志到指定文件
 - 服务崩溃后会自动重启
 
4.2 UserServer 服务配置
[Unit]
Description=UserServer 用户服务
After=FLServer.service
[Service]
Type=simple
Restart=always
User=root
WorkingDirectory=/home/game/Server/
ExecStart=/home/game/Server/UserServer
RestartSec=1
StandardOutput=append:/home/game/Server/log/UserServer.log
StandardError=append:/home/game/Server/log/UserServer-err.log
[Install]
WantedBy=multi-user.target
配置说明:
- 此服务依赖FLServer服务
 - 其他配置与FLServer类似
 
4.3 SuperServer 服务配置
[Unit]
Description=SuperServer 管理服务
After=mysqld.service
[Service]
Type=simple
Restart=always
User=root
WorkingDirectory=/home/game/ztgame/
ExecStart=/home/game/ztgame/SuperServer
RestartSec=1
StandardOutput=append:/home/game/ztgame/log/SuperServer.log
StandardError=append:/home/game/ztgame/log/SuperServer-err.log
[Install]
WantedBy=multi-user.target
4.4 场景服务器集群配置
对于需要多个实例的场景服务器,可以创建多个服务文件:
# /etc/systemd/system/ScenesServer@.service
[Unit]
Description=ScenesServer 场景服务 %I
After=SuperServer.service
[Service]
Type=simple
Restart=always
User=root
WorkingDirectory=/home/game/ztgame/
ExecStart=/home/game/ztgame/ScenesServer
RestartSec=1
StandardOutput=append:/home/game/ztgame/log/ScenesServer%I.log
StandardError=append:/home/game/ztgame/log/ScenesServer-err%I.log
[Install]
WantedBy=multi-user.target
使用模板服务启动多个实例:
# 启动10个场景服务器实例
for i in {1..10}; do
  systemctl enable ScenesServer@$i
  systemctl start ScenesServer@$i
done
5. 最佳实践建议
- 
日志管理:
- 使用logrotate定期轮转日志
 - 为每个服务配置独立的日志文件
 
 - 
安全建议:
- 避免使用root用户运行服务
 - 为游戏服务创建专用用户
 - 限制服务目录权限
 
 - 
性能调优:
- 根据服务器负载调整RestartSec
 - 监控服务资源使用情况
 
 - 
维护建议:
- 保持服务配置文件版本控制
 - 记录每个服务的配置变更
 - 定期检查服务日志
 
 
6. 常见问题排查
- 
服务无法启动:
- 检查ExecStart路径是否正确
 - 检查文件权限
 - 查看journalctl日志:
journalctl -u 服务名 
 - 
服务频繁重启:
- 检查应用程序错误日志
 - 调整RestartSec参数
 - 检查系统资源是否充足
 
 - 
依赖服务问题:
- 使用
systemctl list-dependencies查看依赖关系 - 确保依赖服务已正确启动
 
 - 使用