WATCH(1) General Commands Manual WATCH(1)

名称

watch - 周期性地执行程序并全屏显示输出

概述

watch [选项 ...] 命令

描述

watch 重复运行 命令,显示其输出和错误(前者全屏显示)。这使您可以观察程序输出随时间的变化。默认情况下,命令 每 2 秒运行一次,watch 将持续运行,直到被中断 (Ctrl-C)。输出的头部包括 命令 的开始时间和运行时间,以及它的退出状态码。

选项

如果 命令 以非零返回值退出,则发出哔声。
解释 ANSI 颜色和风格序列。
不要解释 ANSI 颜色和风格序列。
高亮显示两次更新之间的变化。如果指定了可选的 永久 参数,则 watch 将显示自第一次迭代以来的所有变化。永久 参数需要和选项相连,例如 -d1 or --differences=1
命令 出错时停止更新,并在按任意键后退出。watch 的退出状态码是 命令 的退出状态码。如果信号 n命令 终止的原因,则退出状态码是 128 + n
watch 不会在每次更新时清除屏幕,而是会像 tail -f 那样滚动显示输出内容。此选项与任何追踪屏幕输出的选项(如 --differences--chgexit--eqexit)均不兼容。
命令 的可见的输出发生变化时退出。因为屏幕大小或者输出太大,无法在屏幕上显示的变化,不会导致 watch 退出。
指定更新间隔。小于 0.1 和大于 2678400(31 天)的时间间隔将被转换成相应的下限和上限。任何区域设置下都可以用 '.' 或 ',' 作为小数点。可使用 WATCH_INTERVAL 环境变量持久性地设置一个非默认的时间间隔(遵循相同的规则和格式)。
命令 上一次执行开始之后 --interval 秒执行命令,而不是上一次执行结束之后 --interval 秒。如果完成 命令 需要的时间超过了 --interval 秒,那么不论哪种情况,都会等待命令完成。
如果 命令 的输出在给定的周期数内没有变化,则退出。
不要在终端大小变化时重新运行程序,程序的输出将在下一次正常运行时重新出现。
保存屏幕截图的目录。
关闭通常在屏幕顶部显示的标题行。
关闭自动换行。长行将被截断而不是换行到下一行。
命令 传给 exec(3) 而不是 sh -c。程序的启动会稍微加快一点。Shell 功能(环境变量设置、变量和路径展开等)将不可用。
显示帮助文本并退出。
显示版本信息并退出。

按键控制

空格
立即执行 命令。如果它当前正在执行,则它不会被打断,但它的下一次执行将在本次执行结束后立即开始。
退出 watch。目前,这个操作不会打断正在执行的 命令(和终止信号不同,例如在按下 Ctrl+C 后发出的 SIGKILL)。
保存屏幕截图。它会被保存在当前工作目录,除非通过 --shotsdir 另外指定。如果 命令 当前正在执行,则屏幕截图将在它完成之后立即保存。

退出状态

0
成功。不代表 命令 的退出码。
1
命令 的操作无关的错误。
2
命令 的执行和管理有关的错误(不是它的退出码)。
任何非零值 (--errexit)
使用 --errexit 时,将返回 命令 的最后一个退出码。

环境

watch 的行为受以下环境变量的影响。

更新间隔,遵循与 --interval 命令行选项相同的规则。
终端屏幕宽度(字符数)。设置此变量来覆盖自动检测的结果。
终端屏幕高度(字符数)。设置此变量来覆盖自动检测的结果。

备注

本命令使用 POSIX 选项处理方式(即选项处理会在第一个非选项的参数处停止)。这意味着 命令 之后的标志不会由 watch 本身进行解释。

不可打印字符将从程序输出中去除。如果您想查看它们,请使用 cat -v 作为命令管道的一部分。

示例

要监控目录内容的更改,您可以使用

watch -d ls -l

如果您有支持动态调频的 CPU,并且想观察频率的变化,请试试以下命令。该命令会被传给 shell,所以您可以使用管道。双引号也是 shell 的功能之一。

watch -n1 'grep "^cpu MHz" /proc/cpuinfo | sort -nrk4'

要监控服务器的运行状态,您可以使用此方法将每次运行的输出的副本保存到文件中。-p 使命令每 10 秒执行一次,而不管上次运行花了多长时间。

watch -n10 -p -d '{ date; for i in 10.0.0.31 10.0.0.32 10.0.0.33; do R=OK; ping -c2 -W2 "$i" &>/dev/null || R=FAIL; echo "$i: $R"; done } | tee -a ~/log'

要观察管理员有没有安装最新内核,您可以使用

watch uname -r

错误

当终端大小发生变化时,在下一次 命令 运行时,终端的内容变化将不作数。即使 命令 的输出同时发生变化,本次执行也不会触发 --chgexit,并且 --equexit 的计数器也不会重置。--differences 的高亮显示将被重置。

报告错误

请将错误报告发送到 procps@freelists.org

2025-04-16 procps-ng