惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
Jina AI
Jina AI
小众软件
小众软件
GbyAI
GbyAI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 【当耐特】
D
DataBreaches.Net
腾讯CDC
V
Visual Studio Blog
博客园 - 叶小钗
B
Blog
Apple Machine Learning Research
Apple Machine Learning Research
T
The Blog of Author Tim Ferriss
S
SegmentFault 最新的问题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
博客园 - 三生石上(FineUI控件)
云风的 BLOG
云风的 BLOG
The Cloudflare Blog
MongoDB | Blog
MongoDB | Blog
有赞技术团队
有赞技术团队
U
Unit 42
博客园 - 司徒正美
博客园 - 聂微东

暗无天日

读:AI Agent 安全日志——从可见性与隐私的两难说起 - 暗无天日 AI写作的语言指纹——如何让文字不那么像机器 - 暗无天日 读:50 条 Claude Code 技巧——一个工程经理的六个月使用心得 读:AI 辅助开发为什么让 E2E 测试更有价值 - 暗无天日 读:在Emacs中使用Claude Code(Spacemacs适配版) - 暗无天日 Claude Code 背后的工程哲学——读 Agent Harness Engineering 读:Agent Harness Engineering——AI 智能体不只是模型,还有套件 - 暗无天日 browser-harness:让 AI 直接接管你的浏览器 - 暗无天日 读:Security-First CI/CD —— DevSecOps 自动化实践指南 TIL: 数字小键盘的小数点陷阱与行内算术求值 - 暗无天日 读:Immutability 不是万能药,它是一种权衡 - 暗无天日 Conducty:给 Claude Code 加上项目记忆和并行执行能力 - 暗无天日 读 — GitHub Trending 里的 Claude Code 技能包 读 — Prompt Caching 省钱指南 TIL: Emacs 中那些跟鼠标配合的冷门快捷键 - 暗无天日 读:Anvil——把 Emacs 变成 AI 的工具服务器 读:Emacs 代码折叠终极指南 - 暗无天日 读:Clojure 搭车客指南 - 暗无天日 git推送失败后恢复仓库损坏的完整记录 - 暗无天日 多智能体系统的两个有效模式——以及对 Claude Code 用户的启示 - 暗无天日 用 Org Babel 写 Literate 博文:扩展执行 + 定制导出 proced:Emacs 内置的进程查看器 - 暗无天日 从 proced 定制中学到的 Elisp 模式 读:让 Emacs proced 在 macOS 上显示 CPU 和内存 异步编程的函数着色税 - 暗无天日 链式调用的代价:JavaScript 和 Clojure 的共同教训 - 暗无天日 hyperfine:命令行基准测试工具 - 暗无天日 管道中的变量去哪了?——子 shell 作用域陷阱 - 暗无天日 开源包装器的信任陷阱:四个危险信号 - 暗无天日 程序员愿意为 AI 写文档,却不愿为同事写 - 暗无天日
TIL:watch 命令的几个遗漏技巧 - 暗无天日
2026-05-05 · via 暗无天日

之前写过一篇使用watch帮你重复执行命令,把基本用法和常用选项都讲了。这几年陆续发现几个当时漏掉的技巧,不大不小,单独成篇不够,不记又可惜。合在一起当补遗。

管道命令:不加引号会翻车

watch 把后面的命令原封不动传给 shell 执行。管道符号 | 在 shell 里有特殊含义,不加引号会被当前 shell 截胡:

watch ps aux | grep nginx

watch "ps aux | grep nginx"

不加引号时,只有 ps auxwatch 下跑, | grep nginx 是当前 shell 对 watch 输出的过滤,效果完全不同。

累积高亮: -d 的升级版

-d 高亮两次执行之间变化的部分,但只高亮最近一次的变化。 -d=cumulative 保留所有历史变化的高亮,一眼看出哪些字段一直在抖:

watch -d=cumulative -n 1 cat /proc/loadavg

普通 -d 像粉笔在黑板上写字,新写的盖住旧的。 -d=cumulative 像记号笔,画过的地方都留着印。

精确间隔: -p

默认情况下, watch 的计时周期是"命令执行一次 + 等待间隔"。假如命令跑了 0.3s,间隔设 1s,那实际每 1.3s 才跑一次。误差累积下来不小。

-pwatch 精确卡间隔,不计命令执行时间。适合需要固定时间间隔采样的场景:

watch -p -n 1 date

注意:只有 procps-ng 版本的 watch 才支持 -p (大多数 Linux 发行版默认就是这个版本)。但如果命令执行时间本身就超过了间隔,那 watch 也无能为力。

小数间隔

-n 支持小数,想更快刷新就用 0.5

watch -n 0.5 "ss -tn | wc -l"

不过间隔太短要考虑两个问题:一是终端刷新率跟不上,二是命令本身跑不完。如果命令执行时间超过间隔,输出就乱了。

什么时候别用 watch

watch 的设计场景是人盯着屏幕看。如果需要把数据记下来、加条件判断、或者发告警,它就不太合适了:

你在干什么 该用什么 理由
人盯着看变化 watch 全屏刷新+高亮变化,最适合肉眼追踪
把输出存到文件 while sleep 重定向 watch 的输出没法持久化
输出还要再处理 while sleep + 管道 watch 全屏刷新不适合链式处理
条件触发就执行 while sleep + if watch 只有 -g 变化退出,不够灵活
固定时间点跑 cron 无人值守,适合"到点就干"
等一个事件发生 watch -g 自动退出,比 while sleep 优雅

一句话总结: watch 是你的眼睛,不是你的秘书。盯着看用 watch,干活用脚本。