xyOps 命令行指南:control.sh 服务管理、应急管理员恢复与数据库 CLI 实战

发布时间:2026/10/10 8:31:44
xyOps 命令行指南:control.sh 服务管理、应急管理员恢复与数据库 CLI 实战
【免费下载链接】xyopsThe next generation of Cronicle: open-source job scheduling, visual workflows, server monitoring, alerting, and incident response.项目地址https://gitcode.com/gh_mirrors/xy/xyops点击查看免费下载导读xyOps 是 Cronicle 的下一代开源实现覆盖作业调度、可视化工作流、服务器监控、告警与事件响应。除 Web 管理界面外它提供了一套完整的命令行工具本文围绕 docs/cli.md 展开系统讲解control.sh的守护进程启停与升级、应急管理员账号创建、开机自启注册以及用于排障的数据库 CLI并深入对应源码bin/control.sh、bin/storage-cli.js、bin/db-cli.js、lib/multi.js验证每条命令的底层实现。读完本文你将能脱离图形界面完成 xyOps 的日常运维、紧急恢复和底层数据排查。命令总览/opt/xyops/bin/control.shxyOps 的大多数命令行操作都通过一个 Shell 脚本完成/opt/xyops/bin/control.sh [COMMAND]该脚本继承了经典的 Apache httpd 控制脚本风格脚本头注释标注了原作者与 1997 年的历史由 xyOps 作者 Joe Huckaby 二次改造全部命令如下命令说明start以守护进程模式启动 xyOps详见下文启动与停止stop停止 xyOps 守护进程并等待其真正退出restart依次执行stop与start硬重启status检查 xyOps 当前是否在运行admin创建临时应急管理员账号需指定用户名 / 密码grant手动授予用户某个权限bin/control.sh grant USERNAME PRIVILEGE_IDrevoke手动撤销用户某个权限bin/control.sh revoke USERNAME PRIVILEGE_IDupgrade升级 xyOps 到最新稳定版也可指定版本号version输出当前 xyOps 包版本号后退出help显示可用命令列表后退出从源码看脚本还额外暴露了debug前台调试模式带--debug --debug_level 9 --repl --color --echo参数和cycle等价于restart两个命令bin/control.sh但官方命令表中未列出属于运维调试用的隐藏选项。脚本实现细节与退出码阅读 bin/control.sh 的头部注释可以了解脚本的约定退出码0操作成功2用法错误3二进制无法启动4二进制无法停止8配置语法错误传入多个参数时只报告最后一个命令的错误脚本会把常见路径追加进PATH/usr/bin:/bin:/usr/local/bin:/usr/sbin:/sbin等并尝试加载~/.nvm/nvm.sh以兼容 nvm 管理 Node.js 的环境实际启动命令为node --max-old-space-size${NODE_MAX_MEMORY:-4096} $HOMEDIR/lib/main.js即通过环境变量NODE_MAX_MEMORY可调整 Node.js 最大堆内存默认 4096 MBPID 文件位于logs/xyops.pid。status判定运行状态时会读取 PID 文件并通过ps -p $PID -o args校验进程命令行确属 xyOps防止误判残留进程start前会把conf/config.json与conf/overrides.json的权限收紧为600保护其中的密钥配置。启动与停止start / stop / restart启动服务/opt/xyops/bin/control.sh start停止服务脚本会循环kill -0等待进程真正退出见 bin/control.sh/opt/xyops/bin/control.sh stop快速重启先 stop 再 start/opt/xyops/bin/control.sh restartstatus 查询运行状态/opt/xyops/bin/control.sh status输出大致为status: xyOps Server running (pid 12345)或status: xyOps Server not running (no pid file)。注意如果 PID 文件存在但进程已不属于 xyOps脚本会提示not running (pid 12345?)即状态判定是PID 命令行双重校验的结果。恢复管理员访问命令行方式主服务器丢失管理员账号后可以在主服务器上直接创建一个临时管理员账号/opt/xyops/bin/control.sh admin USERNAME PASSWORD将USERNAME替换为期望的用户名PASSWORD替换为期望的密码。要点如下该账号不会出现在 UI 的用户列表中但可以用所填凭据正常登录这是应急操作不适合用于创建正式用户。登录成功后应从 UI 再创建一个正式账号并删除这个应急管理员账号底层实现见 bin/control.sh它调用node bin/storage-cli.js admin $2 $3。而 bin/storage-cli.js 会直接把用户记录写入存储先校验用户名必须匹配^[\w\-\.]$仅允许字母数字、短横线与句点并强制转为小写然后用 bcrypt 加盐哈希密码赋予privileges: { admin: 1 }并合并default_user_prefs默认偏好来自 sample_conf/config.json该脚本要求先停止 xyOps再执行bin/storage-cli.js 会检查logs/xyops.pid若服务在运行且未加--force会直接报错退出若配置了uid即以非 root 用户运行脚本会要求以 root 执行并自动setuid切换身份创建记录写入的路径是users/normalized_usernamenormalize 规则为转小写并剥离所有非字母数字字符bin/storage-cli.js。容器环境变量方式容器化部署中可使用环境变量在下次启动时自动创建应急管理员XYOPS_recover_adminUSERNAME:PASSWORD执行时机是conductor 成为 primary主节点时即集群选主完成之后。从源码看lib/multi.js 在成为 primary 的初始化流程中检查recover_admin配置并调用recoverAdminAccount()lib/multi.js按:拆分为用户名与密码两者缺失或用户名含非法字符都会记录错误日志并中止以usernamelocalhost作为邮箱、full_name为用户名创建账号同样赋予{ admin: true }权限并合并默认偏好成功后写入critical级别事务日志Created emergency admin account。同样地该账号不会出现在 UI 用户列表中仅用于应急登录。务必在登录成功后移除该环境变量否则 xyOps 每次重启重新成为 primary都会重建该账号。注意这与 CLI 方式的行为完全一致——它是应急入口而非用户管理手段。与 SSO 的兼容性恢复管理员访问不适用于 SSO 配置仅对内置用户管理系统生效。若因 SSO IdP 失联而无法登录正确做法是先在 xyOps 配置中禁用 SSO再使用上面的 CLI / 环境变量方式恢复管理员权限。服务器开机自启注册将 xyOps 注册为后台守护进程启动服务服务器重启后自动拉起cd /opt/xyops npm run boot该命令实际执行的是pixl-boot install --script bin/control.sh见 package.json依赖 pixl-boot 模块Linux 上优先使用 Systemd否则回退到 SysV InitmacOS 上则使用 launchd。Linux 用户注意注册为 Systemd 服务后应使用标准systemctl命令启停服务名称为xyops.service。取消注册卸载开机自启执行cd /opt/xyops npm run unboot对应 npm script 为pixl-boot uninstallpackage.json。重要提示服务器开机启动时通常没有完整的用户环境尤其是PATH环境变量因此如果你的作业脚本依赖非标准路径下的二进制可执行文件必须在脚本内部重新声明自定义PATH及其他环境变量否则可能无法找到命令。升级 xyOps内置升级命令/opt/xyops/bin/control.sh upgrade它会将应用及其依赖升级到最新稳定版。升级不会影响你的数据存储、用户与配置——这些都会保留并迁移到新版本。多服务器集群需要在每台服务器上分别执行该命令。指定精确版本升级或降级/opt/xyops/bin/control.sh upgrade 1.0.4升级到HEAD版本会直接从 GitHub 拉取最新代码主要用于开发者或 Beta 测试者很可能包含缺陷请自担风险/opt/xyops/bin/control.sh upgrade HEAD底层实现upgrade命令委托给 bin/install.jsbin/control.sh。从 bin/install.js 源码看该安装器本身也可作为全新安装入口其流程为环境预检要求 Node.js v20可用XYOPS_OLD环境变量强制绕过、总内存不低于 64 MB可用XYOPS_DANGER绕过、必须存在 npm并创建/opt/xyops与/opt/xyops/logs目录、记录install.log读取 GitHub Releases API 列表过滤 pre-release匹配目标版本号不传则取最新稳定版下载 tarball 并--strip-components 1解压覆盖执行npm install安装依赖随后运行node bin/build.js dist构建前端资源若检测到服务正在运行升级前用control.sh stop或检测到已注册 systemd 时用systemctl stop xyops.service停止服务升级完成后再重新启动容器场景XYOPS_foreground下则升级后主动退出交由 Docker 的--restart策略拉起安装与升级的完整输出均写入/opt/xyops/logs/install.log。version命令则通过node -p -e require(./package.json).version直接读取包版本号输出bin/control.sh当前仓库版本为 1.1.5package.json。数据库 CLIdb-cli.jsxyOps 自带一个轻量数据库 CLI用于直接执行底层命令输出始终为 JSON 格式主要面向调试与排障。命令位置/opt/xyops/bin/db-cli.js COMMAND INDEX ARG1, ARG2, ...其中INDEX是数据库表名如tickets、alerts、jobs。它基于 pixl-server 与 pixl-server-unbase 构建启动时加载conf/config.json和 internal/unbase.json后者描述全部数据库表的索引字段并设置独立的日志文件logs/db-cli.logbin/db-cli.js。对指定数据库执行搜索查询/opt/xyops/bin/db-cli.js search tickets status:open获取单条记录amg6sl6z0cc为示例记录 ID/opt/xyops/bin/db-cli.js get alerts amg6sl6z0cc从 bin/db-cli.js 的源码看实际支持的命令包括命令作用关键参数get按 ID 读取一条 Unbase 记录--ididx读取记录在 Unbase 索引中的内部元数据路径为unbase/index/INDEX/_data/id--idsearch按查询语句搜索记录--query、--offset、--limit、--sort_by、--sort_dir、--selectupdate更新单行记录参数以--key value形式传入--id 字段参数delete删除单行记录--id补充说明search默认limit为 1、按_id倒序排序--select支持逗号分隔字段列表如--select id,tags会裁剪每条记录只输出指定字段输出默认是带制表符缩进的格式化 JSON追加--compact参数可输出单行紧凑 JSONbin/db-cli.jsupdate传入的字段参数会被整体作为待更新属性若未提供任何属性会报错该工具是底层开发者工具需要深入了解 xyOps 的数据库体系。可参考 internal/unbase.json其中定义了jobs、alerts、snapshots、activity、servers等表的可搜索字段与排序器例如 jobs 表默认搜索字段为code并索引了tags、event、server、workflow、tickets等字段以及驱动 xyOps 的 Unbase 数据库系统与其查询语法文档。小结与最佳实践围绕 docs/cli.md 提供的全部命令结合源码可以梳理出一套完整的命令行运维套路日常启停与状态检查control.sh start|stop|restart|status需要跟随时长使用--trace-warnings前台调试时可用debug命令权限紧急调整control.sh admin USERNAME PASSWORD恢复管理员control.sh grant USERNAME PRIVILEGE_ID/control.sh revoke USERNAME PRIVILEGE_ID直接读写用户存储bin/storage-cli.js——注意这些操作要求服务处于停止状态版本管理control.sh version查看版本、control.sh upgrade [VERSION|HEAD]升级/降级升级过程记录于logs/install.log开机自启npm run boot/npm run unbootLinux 注册后改用systemctl管理xyops.service底层排障db-cli.js配合 internal/unbase.json 直接查询、更新或删除数据库记录输出 JSON 便于脚本化处理。需要特别记住的两个反直觉点应急管理员账号不会出现在 UI 用户列表中务必用后即删XYOPS_recover_admin环境变量不删除会在每次成为 primary 时重建账号而所有应急恢复手段在启用 SSO 的场景下均不生效需先禁用 SSO 再操作。赞分享【免费下载链接】xyopsThe next generation of Cronicle: open-source job scheduling, visual workflows, server monitoring, alerting, and incident response.项目地址https://gitcode.com/gh_mirrors/xy/xyops点击查看免费下载相关推荐网盘直链下载助手实操指南8大网盘取真实直链交给Aria2多线程下载网盘直链下载助手实操指南8大网盘取真实直链交给Aria2多线程下载 你盯着网盘下载进度条速度卡在38KB/s预计剩余2小时17分。文件才2GB你又不想为前端如何在5分钟内掌握完全离线的语音转文本神器Handy如何在5分钟内掌握完全离线的语音转文本神器Handy 想拥有一个完全离线、隐私安全的语音转文本工具吗Handy正是你需要的终极解决方案这款开源免费的应用让你桌面应用语音音频AI 应用本地部署AReaL CLI 实战指南统一管理训练、推理与 Agent 服务的命令行入口AReaL CLI 实战指南统一管理训练、推理与 Agent 服务的命令行入口 AReaL 在 2.0 微服务架构下提供了 areal 操作者 CLI通过人工智能大模型强化学习分布式训练AI Agent上一篇Neovim-GTK架构解析深入理解Rust与GTK的完美结合下一篇GroupViT代码逐行解读从build_model到语义推理核心模块实现原理详解创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考