DNF私服五国自动化运维图文教程
安全重启 · 开机自动跑五国 · 终端彩色状态看板 —— 公益云香港 8H8G 实机全程实录(CentOS 7 / DP无脑一键端)
前置阅读:《DNF私服跑不出五国排查修复图文攻略》本次产出:3个运维脚本 + 1个systemd服务
〇、为什么要做这一套(真实踩坑现场)
上一篇攻略修复了”跑不出五国”(根因:服务端进程没跑)。但修复后紧接着又踩了三个坑,本篇一套脚本全部解决:
一、第一步:安全重启脚本(防多实例打架)
核心思想:重跑五国之前必须先彻底清场。用一键端自带的 stop 清掉全部进程清单 + 清理日志 pid + FLUSH TABLES,再干净启动:
#!/bin/bash
# DOF 五国安全重启:先彻底清场再启动(避免多实例打架)
cd /root && ./stop >/dev/null 2>&1
sleep 3
killall -9 Memory 2>/dev/null
sleep 2
echo “已清场,正在启动五国…”
/root/dof-autostart.sh force
echo “启动命令已执行,加载约13-15分钟”
ps -ef | grep df_game_r | grep -v grep 应该一条都没有。/root/dof-restart.sh。二、第二步:开机自动跑五国(systemd 服务)
写自启脚本 dof-autostart.sh(三道保险)
# DOF 五国开机自启(防重复启动 + 等待 MySQL 就绪)
LOG=/var/log/dof-autostart.log
log() { echo “[$(date ‘+%F %T’)] $1” >> “$LOG”; }
# 保险1:防重复——已有频道进程在跑就直接退出
if [ “$1” != “force” ] && pgrep -f “df_game_r.*start” >/dev/null 2>&1; then
log “检测到 df_game_r 已在运行,跳过启动(防重复保护)”
exit 0
fi
# 保险2:等 MySQL 就绪(开机时数据库启动需要时间,最多等300秒)
ready=0
for i in $(seq 1 60); do
if (echo > /dev/tcp/127.0.0.1/3306) 2>/dev/null; then ready=1; break; fi
sleep 5
done
[ $ready -eq 0 ] && { log “等待 MySQL 超时,放弃启动”; exit 1; }
# 启动全套服务端
cd /root
nohup ./run > /var/log/dof-run.log 2>&1 &
log “./run 已执行,五国开始加载”
写 systemd 单元(KillMode=none 是关键)
[Unit]
Description=DOF Server Auto Run (wu guo df_game_r x3)
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
KillMode=none ← 关键!
ExecStart=/root/dof-autostart.sh
TimeoutStartSec=600
[Install]
WantedBy=multi-user.target
启用 + 双路径验证
$ systemctl daemon-reload && systemctl enable dof-run
Created symlink …/multi-user.target.wants/dof-run.service
# 验证防重复:五国在线时手动触发服务
$ systemctl start dof-run && cat /var/log/dof-autostart.log
[2026-09-17 18:01:31] 检测到 df_game_r 已在运行,跳过启动(防重复保护)
# 三个 df_game_r 进程 PID 纹丝不动 ✓
三、第三步:终端彩色状态看板 dof-status
安装到 /usr/local/bin/dof-status(任意目录可敲),并在 /root/.bashrc 里加三行实现登录自动显示:
# DOF 五国状态看板(登录自动显示,仅交互式终端)
if [[ $- == *i* ]] && [ -x /usr/local/bin/dof-status ]; then
/usr/local/bin/dof-status
fi
真实效果(SSH 登录即见):
DOF 五国状态面板
==================================================
时间 2026-09-17 18:16:38 已运行 0天5小时8分
系统 ● MySQL在线 ● 网关8188在线 内存 5.6G/7.6G 负载 27.14
● 开机自启已启用 (dof-run)
● siroco12 1区2频道 ████████████████████ 100% ✔ 已上线 :10012
● siroco52 5区2频道 ████████████████████ 100% ✔ 已上线 :10052
● siroco56 5区6频道 ████████████████████ 100% ✔ 已上线 :10056
总状态 ● 五国全部在线,可以进游戏了
加载中时长这样(黄色进度条,一眼看懂还差多远):
● siroco52 5区2频道 ███████████░░░░░░░░░░ 55% 加载中…
● siroco56 5区6频道 ███████████░░░░░░░░░░ 55% 加载中…
总状态 █████████░░░░░░░░░░░░ 70% (在线:1 加载中:2 未启动:0)
提示 PVF加载约13~15分钟,日志在动就是正常,勿重启
进度条怎么算出来的(读启动日志的真实里程碑):
| 日志里程碑 | 进度 | 对应阶段 |
|---|---|---|
| 进程出现,日志尚未建立 | 3% | 刚刚 fork 出来 |
| Init Log | 10% | 日志系统就绪 |
| All DB Open Success | 20% | 14 个数据库全部连通 |
| Loading Items | 35% | PVF 中型数据项加载 |
| Loading Advance Altar | 55% | 进入大项 CPU 计算(最久的一段) |
| GeoIP Allow | 85% | 大项计算完成 |
| Connect To Guild/Monitor | 93% | 服务互联 |
| 端口 10012/10052/10056 监听 | 100% | 上线!绿色 ✔ |
/root/dof-restart.sh。四、日常运维速查
| 场景 | 命令 |
|---|---|
| 看五国状态/进度(登录自动显示) | dof-status |
| 安全重启五国(自动清场防打架) | /root/dof-restart.sh |
| 看自启服务状态 | systemctl status dof-run |
| 看自启动作日志 | tail /var/log/dof-autostart.log |
| 看加载详情(盯进度) | tail -f /home/neople/game/log/siroco12/Log*.init |
| 确认进程(应正好3行) | ps -ef | grep df_game_r | grep -v grep |
| 确认端口(应3个监听) | ss -tlnp | grep -E '10012|10052|10056' |
五、重启后全自动流程回顾
├─ BaoYu 网关自动启动(8188) 原有机制
└─ dof-run.service 触发 本次部署
├─ 防重复检查(已有 df_game_r → 跳过)
├─ 轮询等 MySQL 3306 就绪(最多300秒)
├─ 执行 /root/run(全套服务+三国频道)
└─ PVF 加载 13~15 分钟 → 10012/10052/10056 自动上线
/root/dof-restart.sh。



暂无评论内容