Ubuntu Automatic updates

起因 上午醒来看到邮件里面有一封 netdata 发的警告 netdata 我只部署了少量的服务器,本文和这次警告没有太大关系,而是让我想到了一个很苦恼的事情。 这个应该是 ubuntu 的自动更新机制、他在更新后需要进行重启操作,有一些驱动甚至会重新编译。 触发原因:Ubuntu 系统最近通过 apt 安装了一些软件包更新(最常见的是 Linux 内核 linux-image 或核心库如 libc6),这些更新需要重启系统才能完全生效。Netdata 检测到系统中存在 /run/reboot-required 这个文件(以及里面的 /run/reboot-required.pkgs 列出了具体包),就触发了这个警告。 之前有一台生产的服务器上,有用 cuda、某天 ubuntu 自动更新后、内核态和运行态版本对不齐、导致 cuda 无法使用,当时状态又不好重启、基本没什么办法,比较糟心、现在看到这个之后回想这件事情、决定搜一下文档,看看怎么关闭自动更新。 解决办法 推荐方案1(最优):保留自动安全更新,但黑名单内核和 NVIDIA 包(不影响其他安全补丁) 这样其他软件的安全更新继续自动装,但内核和 NVIDIA 不会自动动,避免重启和 CUDA 问题。 编辑配置文件: 1 sudo vim /etc/apt/apt.conf.d/50unattended-upgrades 在文件里找到 Unattended-Upgrade::Package-Blacklist 部分(如果没有就自己加),添加: 1 2 3 4 5 6 7 8 9 10 Unattended-Upgrade::Package-Blacklist { "linux-generic"; "linux-image-generic"; "linux-headers-generic"; "linux-image.*"; "linux-headers.*"; "nvidia-*"; "libnvidia-*"; "cuda*"; }; 保存后重启 unattended-upgrades 服务(或重启服务器): 1 sudo systemctl restart unattended-upgrades (可选)永久锁定内核版本: 1 sudo apt-mark hold linux-generic linux-image-generic 以后内核更新就只在你手动 apt upgrade 时才发生,你可以在维护窗口处理 NVIDIA driver 重建(sudo ubuntu-drivers autoinstall)并重启。 ...

March 18, 2026 · 1 min · 130 words · Updated: April 20, 2026 · Ray

Ghostty食用指南

先上图,当前效果 Info 刚换这个 mac 的时候,我用的是原生的 terminal,因为很多 remote 开发任务都是使用 vscode 来进行连接,所以当时找了个不知名教程简单配了下 oh my zsh。 之后 ssh 连接的多了后用了 terminus,对它真的是又爱又恨,功能恰好满足我的需求、外观也基本看习惯了。但是某一次 update 后 由于我没有登录账号也没有购买订阅,本地的所有 ssh 连接保存在里面的全部丢失了。这件事情还发生了不止一次。所以一怒之下找了很久其他开源替代。目前暂时使用 tabby,同时在当时切换 terminal -> iTerm,一个月后的今天,心血来潮试了试 Ghostty,那么按目前来说,效果满意 安装 一键安装 1 brew install --cask ghostty 小工具 1 2 brew install btop neofetch brew install starship btop:htop/top 加强版,这个推荐 neofetch:系统信息展示工具,一次性装逼 这俩工具是示例图的右侧和下方的东西 Starship(终端显示 Git、CPU、时间等) 对我来讲略微有点花哨 配置 这里我直接摘抄 树獭非懒 文中的配置,直接一键复制 就是毛玻璃紫色效果 显示已折叠代码(52 行) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 # --- Typography --- font-family = "Maple Mono NF CN" font-size = 14 adjust-cell-height = 2 # --- Theme and Colors --- theme = Catppuccin Mocha # --- Window and Appearance --- background-opacity = 0.85 background-blur-radius = 30 macos-titlebar-style = transparent window-padding-x = 10 window-padding-y = 8 window-save-state = always window-theme = auto # --- Cursor --- cursor-style = bar cursor-style-blink = true cursor-opacity = 0.8 # --- Mouse --- mouse-hide-while-typing = true copy-on-select = clipboard # --- Quick Terminal --- quick-terminal-position = top quick-terminal-screen = mouse quick-terminal-autohide = true quick-terminal-animation-duration = 0.15 # --- Security --- clipboard-paste-protection = true clipboard-paste-bracketed-safe = true # --- Shell Integration --- shell-integration = zsh # --- Claude 专属优化 --- # initial-command = /opt/homebrew/bin/claude initial-window = true quit-after-last-window-closed = true notify-on-command-finish = always # --- Performance --- scrollback-limit = 25000000 # --- 基础分屏(左右添加屏幕)--- keybind = cmd+d=new_split:right keybind = cmd+shift+enter=toggle_split_zoom keybind = cmd+shift+f=toggle_split_zoom ok,到这一步我已知足,日后研究字体相关(等我自己的 mac 到了再折腾) ...

March 17, 2026 · 2 min · 301 words · Ray

openclaw食用小结

openclaw是什么 OpenClaw是一个AI Agent框架,和我们常使用的 Claude code、codex类似,只不过后者专注于编码领域,但是关注相关应用的应该了解有不少程序员 魔改这类cli-agent 让他们进行通用任务(背后的模型足够强大) Openclaw 爆火的原因主要在于做足了周边适配,一个agent配置了基座模型后能够轻易的接入WhatsApp、telegram。让他像真-助理一样存在于你的日常对话APP中。 同时早期的许多案例、给足了openclaw足够的权限、模型能基于shell环境基本控制整个Linux系统,基于强大的模型,做到了很多让普通人眼前一亮的事情、比如帮忙炒股、帮忙购买物品、帮忙制作视频并且上传。 **AI Agent从来不是一个全新的概念。**但OpenClaw本身并不是人工智能——它只是一个“翻译官”和“执行官”。真正聪明的,是它背后接入的语言模型(比如GPT、Claude、Gemini等)。 由于context window 的存在,所以LLM的输入、输出长度是有限的,每个模型的上限不同、现在比较好的模型基本上是 1M上下文 也就是说,模型有严重的失忆症 这就像电影《我的失忆女友》里的女主角,每天早上醒来都会忘记前一天发生的一切。她的男友只能把重要的事情写下来,让她每天早上读一遍。 每次你和它聊天时,它都会把以下内容打包成一段超长的文字,再传给语言模型: 你是谁(主人信息)它自己是谁(身份设定)过去所有的对话记录今天要执行的任务 语言模型看完这一大段“剧本”后,才开始做文字接龙——于是它就接出“我是XX(身份认定),很高兴为您服务”这样的回答。 下面是一些介绍、关于ai agent如何工作,怎么规避LLM的弊端,大部分由 openclaw 为例。 龙虾怎么干活 Function call (最早openai的概念、翻译就是工具调用、另外几家有叫 tool use、或者tool什么的。本质上就是工具调用) 假设你让它“打开question.txt文件,读里面的问题,把答案写到answer.txt里”。流程是这样的: 1、你的指令传到OpenClaw,加上系统提示后发给语言模型 2、语言模型看完指令,发现需要读文件,于是返回一条特殊指令:“请使用read工具,读取question.txt” 3、OpenClaw看到这条指令,直接执行read工具,读取文件内容 4、读到的内容(比如“李宏毅几班”)又被送回语言模型 5、语言模型发现需要写答案,再返回:“请使用write工具,把‘大金’写到answer.txt” 6、OpenClaw执行write工具,完成任务 7、最后语言模型接出“主人,任务完成”,OpenClaw把这句话发回给你 整个过程就像语言模型在手把手地指挥OpenClaw,而OpenClaw就像一个听话的机器人,让做什么就做什么。 工具调用潜在的风险点:exec 接触shell环境将可以执行任何命令,如 rm -rf 当然、这种危险指令可以黑名单、也可以让他的shell进入sandbox执行 自建工具 Function call 由于各家的标准不同、后来出现了统一的mcp范式 而如果一个agent在每次使用时 全量加载它的 二十个mcp,关于各个mcp的描述可能来到了十万上下文 后面就出现了 skills 规范,可以理解为 渐进式加载提示词 ,或者说工作的标准流程 比如 只描述,操作Excel 时需要用到 excel tool 这个skill,这个skill 存放在某某目录 只有当模型判断当前任务需要使用excel时他才会读取该目录下 各个工具的具体用法,避免每次无关的任务也处理这些工具信息从而污染上下文 skills可以通过指定的 skill create 遵循规范来创造。模型本身也会进行一些简单的脚本创建。 ...

March 16, 2026 · 1 min · 138 words · Ray

在博客养了只小猫🐱

如图所示、小猫在会 睡觉、打哈欠、挠头、追踪你的鼠标。点一下睡觉都它就会起来了,别的太花哨的又不是很喜欢。目前这个小猫的实现逻辑非常灵巧。未来希望能够搞一搞它 GitHub - adryd325/oneko.js: Cat follow mouse real! A hacky script I wrote to put a cat on my site. · GitHub 基于这个仓库实现,一个 oneko.js + 一张 oneko.gif 就搞定,没有太多的交互,以后仰仗肖工帮我实现一下 摸头交互功能 可以抄我的作业如下 layouts/partials/extend_footer.html [html] 显示已折叠代码(19 行) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 {{- $neko := site.Params.neko | default dict -}} {{- $enabled := true -}} {{- if isset $neko "enable" -}} {{- $enabled = $neko.enable -}} {{- end -}} {{- $onlyHome := true -}} {{- if isset $neko "onlyHome" -}} {{- $onlyHome = $neko.onlyHome -}} {{- end -}} {{- if and $enabled (or (not $onlyHome) .IsHome) -}} {{- $script := resources.Get "js/neko.js" | js.Build (dict "minify" hugo.IsProduction) -}} {{- if not site.Params.assets.disableFingerprinting -}} {{- $script = $script | fingerprint -}} <script defer crossorigin="anonymous" data-oneko-gif="/hugo-neko/oneko.gif" src="{{ $script.RelPermalink }}" integrity="{{ $script.Data.Integrity }}"></script> {{- else -}} <script defer crossorigin="anonymous" data-oneko-gif="/hugo-neko/oneko.gif" src="{{ $script.RelPermalink }}"></script> {{- end -}} {{- end -}} hugo.yaml ...

March 13, 2026 · 7 min · 1318 words · Ray

Linux 存储空间爆满排查处理

Info 在Linux中创建文件或运行应用时,出现错误提示No space left on device,表明存储资源已耗尽。 参考文章 :诊断并解决Linux实例磁盘空间满的多种场景-云服务器 ECS-阿里云 GPT5.4 指导 排查过程 由于该服务器是公司的主开发、测试服务器,使用人数较多经常会出现这个问题,这次统一整理一下操作过程,记录学习 检查分区情况 首先使用 df -h 查看 哪个分区满了 df : disk free -h: human-readable,不加该参数默认会以“字节”(Bytes)为单位显示,加上后系统会自动以 G (GB)、M (MB)、K (KB) 等单位显示 1 2 3 4 5 6 7 8 9 10 11 (base) yangr@172-16-99-32-Dev:/data/huggingface_model$ df -h Filesystem Size Used Avail Use% Mounted on tmpfs 13G 29M 13G 1% /run /dev/mapper/ubuntu--vg-ubuntu--lv 501G 481G 0 100% / tmpfs 63G 3.0M 63G 1% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sdb1 3.6T 2.8T 622G 82% /data /dev/sda2 2.0G 252M 1.6G 14% /boot /dev/sda1 1.1G 6.1M 1.1G 1% /boot/efi tmpfs 13G 12K 13G 1% /run/user/1000 tmpfs 13G 12K 13G 1% /run/user/1002 我这里 / 分区已经 100% 此时大部分程序写入 日志或者 /tmp之类都会失效,严重影响服务器使用 ...

March 13, 2026 · 4 min · 809 words · Ray