EasyWI 6.2.2 常用 CLI 命令与工具详解

EasyWI 6.2.2 命令行工具全解:web 根 PHP 运维脚本逐参数实测回显、cron 定时任务配置与 lastCron 验证、api.php curl 鉴权链与 base64 载荷坑及排障实录。

EasyWIEasyWI面板CLI命令运维运维2026/11/03

EasyWI 6.2.2 常用 CLI 命令与工具详解

目标:把 EasyWI 6.2.2 面板在命令行下可用的全部工具(web 根目录 PHP 运维脚本、cron 定时任务、api.php 的 curl 调用)逐个讲清用法、参数与真实回显。本文所有命令与输出均来自 6.2.2 实装环境实测(Web 根 /var/www/html,PHP 7.4.33,MariaDB 10.11,实测日期 2026-11-02);面板从零部署见 《EasyWI 6.2.2 Docker Compose 部署指南》,配置项含义见 《EasyWI 6.2.2 配置参数详解》。

一、环境信息

项目值
面板版本6.2.2(easywi_version 表实测 1 6.2.2)
Web 根目录/var/www/html(所有 CLI 脚本所在地)
PHP7.4.33(cli,NTS),回显见 3.1
数据库MariaDB 10.11,库 easywi,账号 easywi / q1w2e3r4
面板地址http://localhost:8138/(settings.paneldomain 实测值)
管理员账号admin / q1w2e3r4(accounttype=a)
API 用户apiuser / q1w2e3r4,来源 IP 白名单 10.89.65.1
服务器时区Europe/Berlin(stuff/config.php 的 $timezone)

二、工具概览

EasyWI 没有独立的二进制 CLI 客户端,它的「命令行能力」由三类东西构成:

  1. web 根目录下的 PHP 运维脚本(用 php <脚本> [参数] 直接运行):statuscheck.php(服务器状态巡检)、jobs.php(任务队列执行器)、startupdates.php(定时同步与更新触发)、reboot.php(版本与升级源检查)、cloud.php(云资源任务)、trafficdata.php(外部流量/MySQL 容量采集)、get_password.php(root 服务器回调接口)。
  2. cron 定时任务:安装向导最后一步直接生成上述脚本的 crontab 条目(见 4.8)。
  3. api.php 的 curl 调用:全模块 REST API,命令行下用 curl 提交 base64 编码的 JSON/XML(见 4.9)。

web 根目录脚本清单实测:

ls /var/www/html/*.php
/var/www/html/admin.php
/var/www/html/ajax.php
/var/www/html/api.php
/var/www/html/cloud.php
/var/www/html/get_password.php
/var/www/html/images.php
/var/www/html/index.php
/var/www/html/jobs.php
/var/www/html/lend.php
/var/www/html/login.php
/var/www/html/protectioncheck.php
/var/www/html/reboot.php
/var/www/html/serverallocation.php
/var/www/html/startupdates.php
/var/www/html/statuscheck.php
/var/www/html/switch.php
/var/www/html/trafficdata.php
/var/www/html/userpanel.php

⚠️ 注意:admin.php、userpanel.php、switch.php、lend.php、serverallocation.php、protectioncheck.php 是 Web 页面入口,源码不读取 $argv,命令行运行无意义;真正的 CLI 工具是上面第 1 类七个脚本 + api.php(经 HTTP)。

三、前置条件

3.1 PHP CLI 可用

php -v
PHP 7.4.33 (cli) (built: Nov 15 2022 06:03:30) ( NTS )
Copyright (c) The PHP Group

3.2 进入 web 根目录并确认数据库可连

运维脚本用 dirname(__FILE__) 定位自身、从 stuff/config.php 读取数据库连接,建议统一 cd /var/www/html 后以相对名运行:

cd /var/www/html && mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT id,version FROM easywi_version;"
id	version
1	6.2.2

3.3 API 凭据与 IP 白名单就绪

curl 调用 api.php 前需确认:后台 Admin→API settings 已建 API 用户 apiuser(口令 q1w2e3r4),且调用来源 IP 已加入 api_ips 白名单(本环境为 10.89.65.1)。两项的表结构与配置入口详解见 《EasyWI 6.2.2 配置参数详解》 第四章。

四、各工具详解

4.1 statuscheck.php —— 服务器状态巡检

做什么:按类型巡检游戏服、语音服、MySQL 容量、Web 配额、用户统计,并刷新 settings.lastCronStatus 时间戳(源码 110 行 UPDATE settings SET lastCronStatus=UNIX_TIMESTAMP())。后台首页的四张 Cronjob 健康卡就是读这些时间戳判断「最近一次运行是否超时」。

参数(源码 48-83 行实测归纳):

参数形态含义真实默认值
gs / vs / vh / my / st只跑对应类型:游戏服 / 语音服+TSDNS / Web 配额 / MySQL 容量 / 用户统计不带则全量
纯数字sleep 秒数(各检查之间的间隔)未设
键:值(如 tsDebug:1、coolDown:60)透传给内部检查逻辑的 k:v 参数未设

逐条实测:

cd /var/www/html && php statuscheck.php gs
Checking Gameserver
Checking 0 server(s) with GameQ v3 query
Checking 0 server(s) with GameQ v2 query
php statuscheck.php vs 30
Checking Voiceserver
Checking TSDNS
php statuscheck.php my
Getting MySQL DB sizes
php statuscheck.php st
Checking Usage Statistics
Gathering statistics for user admin with ID 1
php statuscheck.php vh
Checking Web Quotas
Checking Quota usage

不带类型参数即全量巡检:

php statuscheck.php
Checking Gameserver, Voiceserver MySQL DB sizes and Web Quotas
Checking 0 server(s) with GameQ v3 query
Checking 0 server(s) with GameQ v2 query
Checking TSDNS
Checking Quota usage
Gathering statistics for user admin with ID 1

验证生效(时间戳刷新):

php statuscheck.php gs >/dev/null; mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT lastCronStatus, FROM_UNIXTIME(lastCronStatus) s FROM settings WHERE id=1\G"; date +%s
*************************** 1. row ***************************
lastCronStatus: 1793635847
             s: 2026-11-02 16:10:47
1793635847

lastCronStatus 与 date +%s 同值,说明脚本确实回写了巡检时间。

HTTP 触发被拒(浏览器直接打开 statuscheck.php):

curl -s http://localhost:8138/statuscheck.php
Statuscheck can only be run via console or a cronjob

源码守卫(113 行):仅当 REMOTE_ADDR 等于本机 SERVER_ADDR 或命中 settings.cronjob_ips 白名单才执行,否则输出上面这行拒绝文本。需要 HTTP 触发时把来源 IP 加进 cronjob_ips。

4.2 jobs.php —— 任务队列执行器

做什么:消费 jobs 表里的待办任务(语音服、游戏服、root 服、mysql、TS DNS、快下载、用户清理等),执行完刷新 settings.lastCronJobs。两种运行形态由参数决定(源码 50-80 行):

参数含义真实默认值
无参数cronjob 形态:跑一轮队列后退出—
deamon守护形态:循环执行,每轮之间 sleepsleep 默认 60 秒
纯数字(如 30)覆盖守护模式 sleep 秒数60
键:值透传 k:v 参数未设

cronjob 形态实测(本环境 jobs 表有 1 条 open 任务,输出为全量逐类处理过程):

php jobs.php
Running job management as cronjob
Total jobs open: 1. Cleaning up outdated and duplicated entries

Total jobs open after cleanup: 1
Executing user cleanup jobs

Total jobs open after user cleanup jobs are done: 1
Executing voice jobs

Total jobs open after voice jobs are done: 1
Executing TS DNS jobs

Total jobs open after TS DNS jobs are done: 1
Executing mysql jobs

Total jobs open after mysql jobs are done: 1
Executing gameserver jobs

Total jobs open after gameserver jobs are done: 1
Executing root server jobs
Collecting Dedicated and Vmware server changes

ApplyingPXE changes

Applying DHCPchanges

(Re)starting/Stopping dedicated server

Adding, Altering, Removing, (Re)starting and Stopping VMWare Virtual Container

Removing VMWare Virtual Container/Dedicated Server from DB 

Total jobs open after root server jobs are done: 1
Executing Fastdownload jobs

Total jobs open after Fastdownload jobs are done: 1
Executing user remove jobs

守护形态实测(deamon 不退出,此处用 timeout 5 截断,退出码 124 即超时终止;末行为守护循环的等待提示):

timeout 5 php jobs.php deamon
Running job management as Deamon
Total jobs open: 1. Cleaning up outdated and duplicated entries

Total jobs open after cleanup: 1

(中间与 cronjob 形态逐类处理输出相同,输出节选(实测首尾))

Deamon run finished. Current memory usage is: 2260976 Bytes. Waiting 60 seconds before next job run

数字参数覆盖 sleep 实测:

timeout 3 php jobs.php deamon 30 2>&1 | tail -2
Deamon run finished. Current memory usage is: 2261008 Bytes. Waiting 30 seconds before next job run

Waiting 60 → Waiting 30,数字参数生效。验证 lastCronJobs 刷新:

mysql -ueasywi -pq1w2e3r4 easywi -e "SELECT lastCronJobs, FROM_UNIXTIME(lastCronJobs) j FROM settings WHERE id=1\G"
*************************** 1. row ***************************
lastCronJobs: 1793635847
             j: 2026-11-02 16:10:47

4.3 startupdates.php —— 定时同步与更新触发

做什么:按「当前小时+分钟」匹配 rserverdata.updateMinute 触发对应 root 服务器的同步/更新任务。参数(源码 50-63 行):

参数含义
all_root忽略时间匹配,检查所有 active 的 root 服务器
force_update强制更新(两参数可组合)

默认形态实测:

php startupdates.php
Start Syncs and Updates. Hour is 17 and minute is 9
Checking for servers to be updated and or synced at hour 17 and between minutes 10 and 9
Altered minutes for running a more efficient query will be  updateMinute > 9 AND updateMinute < 10

逐行解读:第一行取当前时刻(17 点 9 分);第二行按分钟匹配待更新服务器(updateMinute 落在窗口内才触发);第三行是它改写成区间查询的实际 SQL 条件。组合参数实测:

php startupdates.php all_root force_update
Start Syncs and Updates. Hour is 17 and minute is 9
Checking for all available and active servers

HTTP 形态同样受守卫约束(源码 78 行):REMOTE_ADDR 必须等于本机 SERVER_ADDR 或命中 settings.cronjob_ips,否则整段逻辑跳过。

4.4 reboot.php —— 版本与升级源检查

做什么:每小时一次的维护脚本——核对 Easy-WI 自身版本、抓取 TS3 服务端/ Minecraft・Bukkit / valve appID 最新版本号、拉新闻源、清日志,并刷新 settings.lastCronReboot。实测(输出含真实上游告警,见第六章 FAQ):

php reboot.php
Reboot and Updater started
<br>Fetch Easy-Wi version
<br>You are running the latest Easy-Wi version: 6.2.2.
<br><br>Fetch version for Teamspeak 3 Server

Warning: DOMDocument::loadHTMLFile(https://files.teamspeak-services.com/releases/server/): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
 in /var/www/html/stuff/methods/functions_ts3.php on line 505

Warning: DOMDocument::loadHTMLFile(): I/O warning : failed to load external entity "https://files.teamspeak-services.com/releases/server/" in /var/www/html/stuff/methods/functions_ts3.php on line 505

Warning: DOMDocument::loadHTMLFile(https://files.teamspeak-services.com/releases/server/): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
 in /var/www/html/stuff/methods/functions_ts3.php on line 505

Warning: DOMDocument::loadHTMLFile(): I/O warning : failed to load external entity "https://files.teamspeak-services.com/releases/server/" in /var/www/html/stuff/methods/functions_ts3.php on line 505
<br>Current versions for Teamspeak 3 Server are  (32bit) and  (64bit)
<br><br>Fetch version for Minecraft and Bukkit Server
<br><br>Fetch version for valves appIDs
<br><br>Check for new news feeds
<br><br>Skipped Feeds:0 Checked Feeds: 0 Skipped News:0 New Entries:0 Removed Entries:0
<br><br>Cleaning Logs

要点:脚本自带版本核对能力(You are running the latest Easy-Wi version: 6.2.2.);TS3 版本号抓取因上游 URL 404 而为空,但不中断后续步骤。

4.5 cloud.php —— 云资源任务

做什么:处理云平台(Proxmox/VMware 等)的异步任务并刷新 settings.lastCronCloud。本环境未配置云平台,实测输出即「启动并连接外部系统」两行:

php cloud.php
Cloud jobs started
File include and parameters fetched. Start connecting to external systems.

4.6 trafficdata.php —— 外部 MySQL 容量采集

做什么:从面板配置的外部 MySQL 服务器采集数据库大小/流量数据。参数(源码 43-44 行):argv[1]=maxTime(默认 60 秒)、argv[2]=memoryLimit(默认 64M)。实测:

php trafficdata.php
The time is now: 60
The memory limit is now: 64M
SQLSTATE[HY000] [2002] No such file or directoryCould not connect to external server

前两行回显两个参数的默认值;第三行是预期结果——本环境没有在 Admin→MySQL servers 配置外部数据库服务器,PDO 连接失败后脚本如实报 Could not connect to external server。配了外部 MySQL 后此段将输出各库容量统计。

4.7 get_password.php —— root 服务器回调接口

做什么:这不是日常巡检工具,而是供 root 服务器(游戏服安装/更新脚本)回调的接口,源码四段逻辑(53-140 行):

GET 参数行为回显
w=ms&shorten=<servertypes.shorten>请求 IP 命中 rserverdata.ip/altips 时,把 rservermasterg 的 installing/updating 置 N、localVersion=steamVersion,为 updateRestart=Y 的游戏服入队重启 job 并发邮件ok
w=bu&id=&shorten=&ip=备份完成回调,发邮件通知ok
w=rb&id=&shorten=&ip=备份恢复回调,发邮件通知ok
无参数(或 IP 不匹配)兜底分支:按请求 IP 从 virtualcontainer 表 AES 解密返回该机密码old

命令行无 GET 参数运行,落入兜底分支且无匹配记录,实测输出仅三个字符(无换行):

php get_password.php
old

要点:该脚本的判定完全依赖 REMOTE_ADDR,CLI 运行只用于冒烟测试;真实用途是 masterserver 安装/更新流水线的解锁回调。

4.8 cron 定时任务配置与验证

安装向导最后一步(install 第 9 步)直接生成上述脚本的 crontab 条目,实测留存页面(安装时截图存档)给出四种形态,核心本地形态如下(crontab -e 版):

0 */1 * * * cd /var/www/html && timeout 300 php ./reboot.php >/dev/null 2>&1
*/5 * * * * cd /var/www/html && timeout 290 php ./statuscheck.php >/dev/null 2>&1
*/1 * * * * cd /var/www/html && timeout 290 php ./startupdates.php >/dev/null 2>&1
*/5 * * * * cd /var/www/html && timeout 290 php ./jobs.php >/dev/null 2>&1
*/10 * * * * cd /var/www/html && timeout 290 php ./cloud.php >/dev/null 2>&1

逐条解读:

  • 频率即依赖关系:reboot.php 每小时整点(版本/升级源),startupdates.php 每分钟(同步触发窗口按分钟匹配,必须高频),statuscheck.php/jobs.php 每 5 分钟,cloud.php 每 10 分钟。
  • timeout 290/300 防任务重叠:cron 间隔 60 秒的 startupdates.php 限时 290 秒,保证下一轮开始前上一轮必退出。
  • /etc/crontab 形态在命令前多一个用户字段(安装页写作占位 changeToPHPUser,落地时替换为真实 web 用户);另有 wget -q -O - http://<面板地址>/<脚本> 的远程触发形态,要求来源 IP 先加入 settings.cronjob_ips(见 4.1 的 HTTP 守卫)。

验证 cron 是否在正常跑,两条实测途径:

  1. 数据库时间戳:任一脚本执行后对应 lastCron* 立即刷新为当前秒(4.1 已实测 lastCronStatus = date +%s = 1793635847)。
  2. 后台首页健康卡:管理首页对四个任务各显示一张状态卡,实测文本:
Cronjob: statuscheck.php  Cronjob: startupdates.php  Cronjob: jobs.php  Cronjob: cloud.php

卡片颜色由 lastCron* 距今时长与 lastCronWarn* 标志决定(settings 表逐列含义见 《EasyWI 6.2.2 配置参数详解》 3.2 节)。

4.9 api.php —— curl 命令行 API

协议(源码实测归纳):POST /api.php,表单字段 user、pwd、type、json 或 xml(二选一)。type 白名单七种(源码 73 行):gserver、list、tsdns、mysql、user、voice、web。业务参数走 json=<base64> 或 xml=<base64>,服务端解码链为 json_decode(urldecode(base64_decode($_POST['json'])))(源码 93 行)——先 base64,不是明文 JSON。

鉴权链逐级实测(来源 IP 10.89.65.1 已在白名单):

curl -s -X POST http://localhost:8138/api.php -d "type=user"
403 Forbidden: No valid access data. No API user given. Request IP is: 10.89.65.1
curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=wrongpass&type=user"
403 Forbidden: No valid api data Request IP is: 10.89.65.1
curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=q1w2e3r4&type=user"
403 Forbidden: Neither POST value xml, nor JSON has been send!

三条 403 依次对应鉴权链的三关:无 user → 凭据不匹配 → 缺业务载荷。凭据正确且带载荷即通过,业务参数 base64 构造:

B64=$(echo -n '{"action":"ls"}' | base64); echo "json=$B64"
json=eyJhY3Rpb24iOiJscyJ9

各 type 的 ls 动作实测(本环境未录入任何游戏服/语音服/数据库/站点,故均为空集合):

curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=q1w2e3r4&type=gserver&json=$B64"
[]

type=voice、type=tsdns、type=mysql、type=web 同参数实测输出均为 []。type=list(服务器列表汇总)实测返回 200 但响应体为空:

curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=q1w2e3r4&type=list&json=$B64" -w "\n[http_code=%{http_code} size=%{size_download}]\n"

[http_code=200 size=0]

非法 type 实测(注意回显里 bogus 与 is 之间没有空格,源码 197 行拼接如此):

curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=q1w2e3r4&type=bogus&json=$B64"
403 Forbidden: Type bogusis not known

json 参数不 base64、直接发明文 JSON 的报错实测:

curl -s -X POST http://localhost:8138/api.php -d 'user=apiuser&pwd=q1w2e3r4&type=gserver&json={"action":"ls"}'
403 Forbidden: JSON not vaild

(vaild 为平台原文拼写。)

user 类型的查询动作实测——查 admin(accounttype=a)返回全空字段,因为 user API 只查 accounttype='u' 的普通用户:

B64U=$(echo -n '{"action":"ls","identify_by":"username","username":"admin"}' | base64)
curl -s -X POST http://localhost:8138/api.php -d "user=apiuser&pwd=q1w2e3r4&type=user&json=$B64U"
{"action":null,"username":"admin","external_id":"","email":"","errors":"","password":"","active":"","localid":""}

user add 的静默失败实录(本批次环境实测沉淀,详见第六章 6.3):JSON 模式提交新增用户 apitest2,响应看似成功但库里没有新行:

{"action":null,"username":"apitest2","external_id":null,"email":"apitest2@example.com","errors":"","password":"","active":"Y","localid":"0"}

改用 XML 模式提交 apitest4,同一失败被如实报出:

<action>fail</action><actionSend>add</actionSend><username>apitest4</username>
<errors>Could not write user to database</errors><localid>0</localid>

五、注意事项

  1. 统一 cd /var/www/html 后再运行:脚本以自身所在目录定义 EASYWIDIR 并包含 stuff/ 下的类库,从其他目录用绝对路径运行也可,但相对路径习惯与 cron 条目保持一致最稳妥。
  2. cron 条目务必带 timeout:安装页生成的模板已带 timeout 290/300,自行改频率时保留该机制,防止上一轮未退出下一轮又起。
  3. jobs.php deamon 是前台常驻进程:实测 Waiting 60 seconds before next job run 后循环不退出,不要用普通 shell 直接挂它;需要守护形态请交给进程管理器,日常用无参数 cronjob 形态即可。
  4. HTTP 触发 cron 脚本需白名单:statuscheck.php/startupdates.php 的守卫要求来源 IP 等于 SERVER_ADDR 或在 settings.cronjob_ips 中,否则一个只输出拒绝文本、一个整段跳过。
  5. api.php 的 json/xml 值必须 base64:明文 JSON 报 403 Forbidden: JSON not vaild(原文拼写);curl -d 直发按 4.9 的 B64=$(echo -n '{"action":"ls"}' | base64) 构造即可,无需再 urlencode。
  6. API 回显是逐字面量:Type bogusis not known 缺空格、vaild 拼错都是平台源码原样,写自动化断言时按字面匹配。
  7. user API 只覆盖 accounttype='u':查管理员(a)/分销商(r)会返回全空字段而非报错,别把「空字段」误读成「用户不存在」。
  8. 示例凭据:本文演示账号 admin / apiuser,口令均为测试口令 q1w2e3r4。

六、常见问题

6.1 curl 调 API 永远 403

按鉴权链逐级定位,三种 403 文本一一对应(实测见 4.9):No API user given → 没传 user;No valid api data → user/pwd 不匹配(注意 pwd 传明文,服务端自行加盐哈希比对);Neither POST value xml, nor JSON has been send! → 凭据已通过,缺 json/xml 载荷。若来源 IP 不在 api_ips 白名单,同样落在 No valid api data 一档,先查 api_ips 再查口令。

6.2 reboot.php 刷 TS3 版本 404

实测告警 DOMDocument::loadHTMLFile(https://files.teamspeak-services.com/releases/server/): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found(functions_ts3.php 505 行)。定位:上游 TeamSpeak 改版了发布页 URL,脚本抓取不到版本号,输出 Current versions for Teamspeak 3 Server are (32bit) and (64bit)(括号为空)。处理:不影响其余步骤(Minecraft/valve appID/新闻源/清日志照常),需要 TS3 版本自动更新时关注上游仓库适配;应急可手工维护版本号。

6.3 API user add 返回像成功但库里没数据

现象:JSON 模式 add 返回 {"action":null,"username":"apitest2","external_id":null,"email":"apitest2@example.com","errors":"","password":"","active":"Y","localid":"0"}(见 4.9 实录),看似成功,SELECT * FROM userdata 无新行。定位过程:用同款 INSERT 手工直进 MariaDB 能成功落库 → 差异在 PHP 层;源码 stuff/api/api_users.php 231 行 INSERT 后以 isid(lastInsertId,10) 判自增 ID 合法性,判假走 273 行报 Could not write user to database,而 JSON 分支不回显该错误——PDO 静默吞错 + JSON 分支丢错误信息是双重坑。处理:写操作优先用 XML 模式(同一失败会如实返回 <errors>Could not write user to database</errors>),或每次 add 后以 SELECT 复核落库。

6.4 API 响应体混入 PHP Warning

实测 type=user 的 ls 动作曾返回:

[]<br />
<b>Warning</b>:  Cannot modify header information - headers already sent by (output started at /var/www/html/stuff/api/api_users.php:755) in <b>/var/www/html/stuff/api/api_users.php</b> on line <b>869</b><br />
{"action":null,"username":"","external_id":"","email":"","errors":"","password":"","active":"","localid":""}

定位:755 行在 header() 之前产生了 echo(调试输出残留),导致 869 行发 JSON 头时 headers already sent,响应体被污染成「JSON+HTML 混排」。处理:清除该文件多余输出后恢复正常 []。教训与 《EasyWI 6.2.2 配置参数详解》 7.2 节一致:API 响应混 HTML 先查 echo/warning,而不是查数据层;自动化脚本解析前应先断言响应以 [ 或 { 开头。

6.5 trafficdata.php 报 SQLSTATE[HY000] [2002]

No such file or directory + Could not connect to external server(实测见 4.6):脚本连接的是面板后台配置的外部 MySQL 服务器,未配置或不可达时必现。处理:Admin→MySQL servers 录入真实外部库后复跑;不需要该功能可不加入 cron。

6.6 浏览器打开 cron 脚本报 "can only be run via console"

见 4.1:HTTP 来源 IP 未命中 SERVER_ADDR/cronjob_ips。处理:首选命令行 cron;确需 HTTP 触发(如面板与服务器分离部署)则把来源 IP 加入 settings.cronjob_ips,安装页的 wget -q -O - http://<面板地址>/statuscheck.php 形态即为此设计。

七、参考链接

EasyWI 6.2.2 常用 CLI 命令与工具详解 - Quzuo