Jacky's blog
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)

Jack Yang

编程; 随笔
首页
  • 学习笔记

    • web
    • android
    • iOS
    • vue
  • 分类
  • 标签
  • 归档
收藏
  • tool
  • algo
  • python
  • java
  • server
  • growth
  • frida
  • blog
  • SP
  • more
GitHub (opens new window)
  • shell

    • shell 入门指南
    • linux 入门指南
    • Shell 常用命令速查手册
    • Shell 代码片段集合
    • brew
    • nvim
    • awk
    • sed
    • xargs
    • fzf
    • fd
    • ssh
    • ftp
    • sftp
    • ifconfig
    • wget
    • watch
      • macOS 注意
      • base
      • common options
      • case
      • 注意事项
  • tool

  • client

  • 网络

  • compute_base

  • blog

  • growth

  • java

  • C&C++

  • ai

  • secure

  • cms

  • english

  • 生活

  • 金融学

  • more

  • other
  • shell
Jacky
2026-09-09
目录

watch

watch 用于周期性执行命令并全屏显示输出,是命令行下的"实时监控"工具。适合观察文件、进程、网络等状态的变化,替代手动反复执行命令。

# macOS 注意

macOS 系统自带的是 BSD 版本的 watch,功能较少(不支持 -d 高亮差异等)。通过 brew install watch 安装的是 GNU 版本(procps-ng),功能更全。以下选项以 GNU 版本为准。

# base

watch [选项] 命令
1

默认每 2 秒执行一次命令,全屏显示输出。按 Ctrl+C 退出。

# common options

  • -n, --interval <秒>:指定执行间隔(默认 2 秒)
  • -d, --differences:高亮本次与上次输出的差异;-d=permanent 永久高亮所有变化过的位置
  • -t, --no-title:不显示顶部标题栏(时间、间隔、命令)
  • -g, --chgexit:输出发生变化时自动退出(适合等待某个状态出现)
  • -b, --beep:命令返回非零退出码时蜂鸣提示
  • -e, --errexit:命令返回非零退出码时停止并显示错误
  • -c, --color:解释 ANSI 颜色序列(让命令的彩色输出正常显示)
  • -x, --exec:通过 exec 执行命令而非 sh -c,减少引号转义问题

# case

监控目录文件变化

watch -d ls -la
watch -d 'ls -lt | head -10'
1
2

监控进程

watch -n 1 'ps aux | grep python'
watch -n 1 'ps aux --sort=-%mem | head -10'
1
2

监控磁盘和内存

watch df -h
watch -n 5 free -h
1
2

监控网络连接

watch -n 1 'netstat -an | grep ESTABLISHED | wc -l'
watch -n 1 'lsof -i :8080'
1
2

监控 Git 状态

watch -d git status
watch -d 'git log --oneline -5'
1
2

监控文件大小变化

watch -d 'ls -lh large-file.iso'
watch -d 'du -sh /tmp'
1
2

等待某个状态出现后自动退出

# 等文件出现后退出
watch -g 'ls myfile.txt'

# 等端口被监听后退出
watch -g 'lsof -i :3000'
1
2
3
4
5

# 注意事项

  • 复杂命令(含管道、通配符)必须用单引号包裹,否则 watch 启动前就会被当前 shell 解析
  • 示例:watch -n 1 'ls *.log' 正确;watch -n 1 ls *.log 会在启动时展开 *.log,之后不会重新匹配
  • 间隔时间不要设太短(如 0.1 秒),高频执行可能增加系统负载
  • 与 tail -f 的区别:tail -f 只追踪单个文件的追加内容,watch 可以周期性执行任意命令
#Shell#devops#Linux
上次更新: 2026/09/10, 14:32:04
wget
mac 百问记录

← wget mac 百问记录→

最近更新
01
direnv
09-09
02
nvim
09-09
03
wget
09-09
更多文章>
Theme by Vdoing | Copyright © 2019-2026 Jacky | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式