Quassel IRC 0.14.0 常用命令详解

Quassel IRC 0.14.0 常用命令详解:账号管理、systemd 服务托管、SQLite 数据库运维与备份、证书操作、日志排障、客户端命令与体检脚本,全部基于 Ubuntu 22.04 实测输出。

Quassel IRCQuassel IRCIRC即时通讯2026/10/26

Quassel IRC 0.14.0 常用命令详解

目标:按运维场景整理 Quassel IRC 0.14.0 的全部常用命令——服务端 quasselcore 管理命令、systemd 服务托管、数据库运维、证书操作、日志排障与客户端命令。本文为命令篇,全部命令在 Ubuntu 22.04.5 实测环境(quassel-core/quassel-client 1:0.14.0-1ubuntu0.22.04.4)执行并记录真实输出(实测日期 2026-10-26);参数逐项语义见配置篇。

一、命令体系总览

Quassel 的命令面在「安装即用」之上非常克制,实测梳理为五组:

组命令用途
服务端程序quasselcore常驻运行 + 一次性管理动作(加用户/改密码/选后端)
服务托管systemctl / journalctlquasselcore.service 的启停与日志
数据运维sqlite3直查/备份聊天记录数据库(仅 SQLite 后端)
证书操作openssl生成/查看/验证 4242 端口 TLS
客户端程序quasselclient图形客户端(headless 下配合 xvfb-run)

⚠️ 架构性结论(实测确认):quasselcore 没有运行期管理 CLI(无 quasselctl 之类工具,无交互式管理 shell)。账号增改是「停会话式」的一次性命令行动作;网络、身份、高亮规则等业务配置只能通过客户端 GUI 操作——这意味着常规运维必须保留至少一台装客户端的机器(或部署 quassel-web)。

二、版本与帮助命令

quasselcore --version
# 实测输出:quassel v0.14.0 (dist-da9c1c9)

quasselcore --help        # 服务端参数(配置篇表 2.1–2.6 全量收录)
quasselcore --help-all    # 追加 Qt 特有选项

客户端同样支持 quasselclient --version/--help(headless 环境须 xvfb-run -a 包裹,实测直接运行 abort)。

三、账号管理命令

3.1 添加核心用户

sudo -u quasselcore quasselcore --configdir /var/lib/quassel --add-user

交互式输入用户名与两次密码后退出。实测创建的用户写入 SQLite quasseluser 表(查询验证):

sqlite3 /var/lib/quassel/quassel-storage.sqlite "SELECT userid,username FROM quasseluser;"
# 实测输出:1|admin

⚠️ 必须以 quasselcore 用户身份执行并对 configdir 有写权限,否则会在错误位置新建空库造成「假成功」(部署篇 FAQ Q3)。

3.2 修改用户密码

sudo -u quasselcore quasselcore --configdir /var/lib/quassel --change-userpass admin

交互式两次输入新密码即生效,无需重启服务。

四、systemd 服务管理命令

sudo systemctl start quasselcore      # 启动
sudo systemctl stop quasselcore       # 停止(优雅退出,实测日志可见 Caught signal 15 → Quitting...)
sudo systemctl restart quasselcore    # 重启(改参数后的标准生效方式)
sudo systemctl status quasselcore     # 状态(实测 active (running),Memory 约 6.3M)
sudo systemctl enable quasselcore     # 开机自启(包安装默认已 enabled)
sudo systemctl disable quasselcore

日志命令:

journalctl -u quasselcore -f          # 实时跟踪
journalctl -u quasselcore --since today
tail -f /var/log/quassel/core.log     # 发行版默认文件日志(logrotate 周轮转)

💡 注意:单元 ExecReload=/bin/kill -HUP $MAINPID 虽存在,但 Quassel 无 SIGHUP 重载配置语义——修改任何启动参数后一律 restart 而非 reload。

五、数据库运维命令(SQLite 后端)

实测表结构:quasseluser(用户)、network(IRC 网络)、identity/identity_nick(身份)、ircserver(网络服务器)、buffer(缓冲区)、backlog(消息存档)、sender、user_setting、core_state、coreinfo。

DB=/var/lib/quassel/quassel-storage.sqlite

# 常用只读查询(实测通过)
sqlite3 $DB ".tables"
sqlite3 $DB "SELECT userid,username FROM quasseluser;"
sqlite3 $DB "SELECT networkid,userid,networkname FROM network;"
sqlite3 $DB "SELECT count(*) FROM buffer;"
sqlite3 $DB "SELECT count(*) FROM backlog;"        # 聊天记录总量
sqlite3 $DB "PRAGMA integrity_check; PRAGMA wal_checkpoint(TRUNCATE);"

备份/恢复(聊天记录只在 SQLite 文件里,备份即救全部):

# 在线热备(推荐,不停服)
sudo -u quasselcore sqlite3 /var/lib/quassel/quassel-storage.sqlite \
  ".backup '/var/backups/quassel-$(date +%F).sqlite'"

# 冷备:停服后整目录打包
sudo systemctl stop quasselcore
sudo tar czf /var/backups/quassel-$(date +%F).tgz -C /var/lib quassel
sudo systemctl start quasselcore

存储后端迁移(更换/重选后端,会尽量搬移数据):

sudo systemctl stop quasselcore
sudo -u quasselcore quasselcore --configdir /var/lib/quassel --select-backend SQLite
sudo systemctl start quasselcore

⚠️ Ubuntu 22.04 仓库包仅 SQLite 可选(Qt 缺 PostgreSQL 驱动,启动日志实测警告),迁移命令在 jammy 上实际用于「重建/修复后端选择」;PG 路线需自备含驱动的构建。

六、证书管理命令

# 查看当前自签证书(实测存在 quasselCert.pem)
openssl x509 -in /var/lib/quassel/quasselCert.pem -noout -subject -dates

# 替换为自有证书(PEM 同时含证书链与私钥;或用 --ssl-cert/--ssl-key 分别指定)
sudo cp your-cert.pem /var/lib/quassel/quasselCert.pem
sudo chown quasselcore:quassel /var/lib/quassel/quasselCert.pem
sudo chmod 600 /var/lib/quassel/quasselCert.pem
sudo systemctl restart quasselcore

# 从客户端侧验证 TLS(实测 Verify return code: 0 (ok))
echo | openssl s_client -connect <core主机>:4242 | grep "Verify return code"

七、日志与排障命令

# 1) 提级排障:/etc/default/quasselcore 改 LOGLEVEL="Debug" 后
sudo systemctl daemon-reload && sudo systemctl restart quasselcore

# 2) 原始 IRC 报文级调试(临时,排障后必须关闭)
sudo -u quasselcore quasselcore --configdir /var/lib/quassel \
  --loglevel Debug --debug-irc-id <网络ID> --debug-irc -l /tmp/irc-debug.log

⚠️ --debug-irc/--debug-irc-parsed 帮助原文警告日志含密码,只允许临时开启并事后删除日志。

常用排障命令链(部署篇 FAQ 实测汇总):

systemctl status quasselcore                 # 进程在否
ss -tlnp | grep 4242                          # 端口监听否(实测双栈)
grep -E "Warn|Error" /var/log/quassel/core.log   # 快速抓异常(实测可抓到 PG 驱动警告)
tail -20 /var/log/quassel/core.log            # 客户端连接记录(实测含 connected/authenticated 行)

关键日志行参考(实测原文):Listening for GUI clients on IPv4 0.0.0.0 port 4242 using protocol version 10(监听正常)、Client <IP> initialized and authenticated successfully as "admin" (UserId: 1)(认证成功)、Core is currently not configured!(未初始化,属新装正常态)。

八、客户端命令

quasselclient                     # 桌面启动,向导连接 core:4242
quasselclient --hidewindow        # 启动即入系统托盘
quasselclient --account <id>      # 启动即连指定账号
quasselclient --icontheme breeze  # 官方推荐图标主题
quasselclient --qss my.qss        # 自定义样式表

# headless 环境(纯命令行服务器)实测可用形态:
xvfb-run -a quasselclient --help

客户端首次运行生成 ~/.config/quassel-irc.org/(实测含 quasselclient.conf UI 状态与 settings.qss);网络/身份/高亮等业务配置存于核心数据库,换机器重装客户端不丢状态。

九、一键体检脚本(汇总)

#!/usr/bin/env bash
# quassel-check.sh:核心节点例行体检(实测环境全部通过)
systemctl is-active quasselcore && \
ss -tln | grep -q ':4242' && echo "[OK] 4242 listening" && \
test -s /var/lib/quassel/quassel-storage.sqlite && echo "[OK] sqlite present" && \
test -s /var/lib/quassel/quasselCert.pem && echo "[OK] cert present" && \
echo | openssl s_client -connect 127.0.0.1:4242 2>/dev/null | grep -q "Verify return code: 0" \
  && echo "[OK] TLS handshake" || echo "[FAIL] see: journalctl -u quasselcore -n 50"

十、参考链接