当文档一打开就卡死时该怎么办?

你有没有这样的场景,当你不小心写了一个非常占用资源的 SQL 查询或者当你复制了某位大神写的死循环的代码,这时你的文档突然卡死,CPU 也飙到 100%。

但,不幸的时,由于思源会记住上次打开的文档,这时,哪怕你强制关闭思源,那么再次重启思源,这个文档依然会被首先打开,思源依然会卡死。

当出现这种情况该怎么办呢?

请看下文。

准备工具:

思源 vscode 插件,浏览器

操作步骤:

第一步,任务管理器强制退出思源,但不要退出内核

image.png

注意: 正常情况下,你退出 SiYuan 进程,随后 SiYuan-Kernel 进程也会退出了,但卡死情况不会。

如果不小心把内核进程也关了怎么办?

别担心,可以用下面的命令打开。

windows:

`C:\Users\Administrator\AppData\Local\Programs\SiYuan\resources\kernel\SiYuan-Kernel.exe --port 6806 --wd C:\Users\Administrator\AppData\Local\Programs\SiYuan\resources --workspace C:\siyuan`

命令具体内容请根据自己实际情况修改。

mac:

/Applications/SiYuan.app/Contents/Resources/kernel/SiYuan-Kernel --port 6806 --wd /Applications/SiYuan.app/Contents/Resources --workspace "/Users/yourname/_data/思源笔记"

命令具体内容请根据自己实际情况修改。

第二步,打开思源工作空间,随便复制个文档 id,但不要是出问题的文档

第三步,打开浏览器输入 http://127.0.0.1:6806/?id=刚才你复制的文档id,这时就打开了你指定 id 的文档了,不会打开原来的文档了

第四步,在目录找到刚才出问题的文档,然后右键插件-> 集成编辑环境->markdown-> 在新标签中打开,然后修改有问题的代码即可。

image.png

注意,第四步找到文档后,千万不要直接打开文档,打开后又会被卡死了。

这第四步也可以在文档树目录中右键文档,然后查看历史,在历史中恢复上一个版本即可。

更进一步

鉴于你可能不知道文档具体在哪个文件夹中,建议你先安装下面这个 js 代码片段,然后就可以通过全局搜索来查找文档,注意,查找后千万不要点击文档,一旦打开就又卡死了,你只需要向下翻滚即可,找到想要的文档后,使用中键点击,即可在文档树中定位该文档了。

但这个查询很可能是精确匹配,在搜索预览时卡死,如果确定会精确匹配的,也可以用 query 挂件用 SQL 查询。

js 代码片段如下

// 搜索列表,鼠标中键在文档树中定位文档,不会打开文档 (()=>{ document.addEventListener('mousedown', async function(event) { // 检查是否按下了鼠标中键 const isModifierKeyPressed = event.button === 1 && !event.ctrlKey && !event.metaKey && !event.altKey && !event.shiftKey; if (isModifierKeyPressed) { const item = event.target.closest('[data-type="search-item"]'); if(!item) return; const docId = item?.dataset?.rootId; if(!docId) return; const docInfo = await requestApi('/api/filetree/getDoc', {id: docId}); if(!docInfo?.data?.path || !docInfo?.data?.box) return; (siyuan?.mobile?.docks?.file||siyuan?.mobile?.files||siyuan.layout.leftDock.data.file).selectItem(docInfo.data.box, docInfo.data.path); const closeBtn = item.closest('.b3-dialog__container')?.querySelector('.b3-dialog__close'); if(!closeBtn) return; closeBtn.dispatchEvent(new MouseEvent('click', { bubbles: true })); } },true); async function requestApi(url, data, method = 'POST') { return await (await fetch(url, {method: method, body: JSON.stringify(data||{})})).json(); } })();

代码备份地址

https://gitee.com/wish163/mysoft/blob/main/%E6%80%9D%E6%BA%90/%E6%90%9C%E7%B4%A2%E5%88%97%E8%A1%A8%E9%BC%A0%E6%A0%87%E4%B8%AD%E9%94%AE%E5%9C%A8%E6%96%87%E6%A1%A3%E6%A0%91%E4%B8%AD%E5%AE%9A%E4%BD%8D%E6%96%87%E6%A1%A3.js

开发者方法

如果你是开发者,还可以在数据库里搜索相关的块信息,然后查到相关的文档 id,根据文档 id 的 sy 文件进行清除(不推荐,我没试过,理论上应该可以)。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    25411 引用 • 105086 回帖 • 1 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    162 引用 • 1109 回帖
3 操作
wilsons 在 2025-04-24 13:46:51 更新了该帖
wilsons 在 2025-04-20 17:10:30 更新了该帖
wilsons 在 2025-04-20 16:58:16 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
wilsons
人生最大的敌人是自己,战胜自己,才能超越一切。

推荐标签 标签

  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 158 关注
  • GitHub

    GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。

    210 引用 • 2040 回帖
  • IDEA

    IDEA 全称 IntelliJ IDEA,是一款 Java 语言开发的集成环境,在业界被公认为最好的 Java 开发工具之一。IDEA 是 JetBrains 公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。

    181 引用 • 400 回帖 • 1 关注
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 54 关注
  • 以太坊

    以太坊(Ethereum)并不是一个机构,而是一款能够在区块链上实现智能合约、开源的底层系统。以太坊是一个平台和一种编程语言 Solidity,使开发人员能够建立和发布下一代去中心化应用。 以太坊可以用来编程、分散、担保和交易任何事物:投票、域名、金融交易所、众筹、公司管理、合同和知识产权等等。

    34 引用 • 367 回帖 • 3 关注
  • 星云链

    星云链是一个开源公链,业内简单的将其称为区块链上的谷歌。其实它不仅仅是区块链搜索引擎,一个公链的所有功能,它基本都有,比如你可以用它来开发部署你的去中心化的 APP,你可以在上面编写智能合约,发送交易等等。3 分钟快速接入星云链 (NAS) 测试网

    3 引用 • 16 回帖 • 2 关注
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    180 引用 • 408 回帖 • 484 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 143 回帖 • 1 关注
  • 大疆创新

    深圳市大疆创新科技有限公司(DJI-Innovations,简称 DJI),成立于 2006 年,是全球领先的无人飞行器控制系统及无人机解决方案的研发和生产商,客户遍布全球 100 多个国家。通过持续的创新,大疆致力于为无人机工业、行业用户以及专业航拍应用提供性能最强、体验最佳的革命性智能飞控产品和解决方案。

    2 引用 • 14 回帖
  • 智能合约

    智能合约(Smart contract)是一种旨在以信息化方式传播、验证或执行合同的计算机协议。智能合约允许在没有第三方的情况下进行可信交易,这些交易可追踪且不可逆转。智能合约概念于 1994 年由 Nick Szabo 首次提出。

    1 引用 • 11 回帖 • 1 关注
  • 倾城之链
    23 引用 • 66 回帖 • 167 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖 • 1 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 726 关注
  • Access
    1 引用 • 3 回帖 • 1 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 657 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    268 引用 • 666 回帖
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 3 关注
  • CongSec

    本标签主要用于分享网络空间安全专业的学习笔记

    1 引用 • 1 回帖 • 31 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    173 引用 • 518 回帖
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • Telegram

    Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。

    5 引用 • 35 回帖
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    239 引用 • 224 回帖
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 631 关注
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 2 关注
  • danl
    163 关注