Linux 中的 Watch 命令示例 - Linux 命令行教程
您是否曾经不得不坐在 Linux 终端前重复输入相同的命令,同时等待不同的结果?个人经验中的一个常见示例是在等待某个文件出现在目录中时键入 ls 命令,例如当正在运行的 Bash 脚本预期生成文件时。对于这样的情况,这正是我们在 Linux 中使用 watch 命令的原因。
watch 命令将持续运行指定的命令,用更新的输出刷新屏幕,以便您可以监视它以获取您一直在等待的所需更改。正如您可以想象的那样,这比不断地反复点击向上箭头键
和Enter
方便得多。
如果您需要每秒、10 秒或 10 分钟运行相同的命令,这并不重要。使用watch命令指定时间间隔非常容易。您还可以将其配置为在屏幕上突出显示更改的输出,这样您就可以准确地知道何时获得了正在等待的结果。在本指南中,我们将向您展示所有提到的选项以及更多选项。您准备好掌握watch命令并减少命令行垃圾邮件了吗?你即将知道如何做!
在本教程中您将学习:
如何在 Linux 上使用 watch 命令
常用选项
watch 命令接受另一个命令及其选项作为输入。然后它将按照指定的时间间隔持续运行该命令。看一下下面的一些示例,了解它是如何工作的。
Linux 中的 watch 命令基本示例
默认情况下,watch 命令将每 2 秒运行一次指定的命令,同时继续在终端中显示最新的输出。例如,此命令将每 2 秒运行一次 ls -l 。
$ watch ls -l
终端左上角的输出显示了 watch 正在运行的命令,以及运行该命令的频率(在本例中为每 2 秒)。右上角显示日期,精确到秒,因此即使
ls -l
的输出没有改变,您仍然知道 watch 正在刷新您的屏幕因为日期不断变化。要随时退出观看,请使用Ctrl + C
键盘组合。您可以使用
-n
或--interval
选项指定运行命令的不同时间间隔。您需要指定时间(以秒为单位)。例如,以下命令将每 0.5 秒运行一次 ls -l 。$ watch -n 0.5 ls -l
如果您希望 Linux 中的 watch 命令突出显示每次刷新之间发生的更改,请使用
-d
或--differences
选项。这比每次有更新时手动扫描差异要容易得多。如果您希望突出显示在连续刷新中保持永久,您也可以使用-d=permanent
选项。$ watch -d date
我们在这个例子中观察
date
命令只是为了说明如何突出显示更改。在下面的屏幕截图中,请注意 watch 如何突出显示已更改的三个字符。这是因为时钟已经转到了不同的分钟,并且date
输出已在其输出中反映了这一点。也许您不想突出显示更改,而是希望在检测到更改时观看完全退出。这可以通过在命令中添加
-g
或--chgexit
选项来实现。$ watch -g ls -l
注意
您始终可以使用 man 命令来阅读有关 watch 命令及其官方文档的更多信息。单击上一个链接可查看如何打开 Linux 系统上任何命令的手册页。
高级用法
上面的命令涵盖了 Linux 中 watch 命令最常用的一些选项,但还有更多可用选项。检查以下示例,了解手表的一些更高级用法以及您可能不经常使用的一些选项。
如果您不喜欢在手表屏幕顶部看到文本(它显示正在运行的命令以及运行时间间隔),您可以使用
-t
或删除它--no-title
选项。$ watch -t date
您可以将多个命令放在引号内,将它们串在一起。
$ watch -t 'date && ls -l'
-p
或--precise
选项将使 watch 通过与官方时间服务器同步其更新而变得非常精确。$ watch -p ls -l
使用
-b
或--beep
选项使系统在命令以非零退出时发出蜂鸣声。$ watch -b tail /var/logs/apache.log
使用
-e
或--errexit
选项使手表屏幕在命令遇到错误时停止更新。这将确保您不会通过按指定的时间间隔刷新和覆盖屏幕来错过屏幕上的潜在错误。$ watch -e tail /var/logs/apache.log
结束语
在本指南中,我们了解了有关 Linux 上的 watch 命令的所有信息。 手表命令旨在提供便利并避免我们的手腕受到腕管的伤害。 watch 不会一遍又一遍地发送相同的命令,而是为我们做这件事。本指南中涵盖的选项将帮助您从这个方便的实用程序中获得更多收益。