有时,您需要重复运行命令或程序来监视系统的各个方面,例如正在进行的进程、磁盘空间使用情况或用户登录。 Linux watch 命令可让您自动执行这些任务,而无需一次又一次手动运行它们。
使用该命令,您可以实时监控系统活动,例如用户登录、网络状态、内存和CPU使用情况、磁盘空间等。让我们看看如何在Linux中使用watch命令。
目录
什么是手表命令?
watch Linux 命令定期重复运行指定的命令或程序,并在终端中显示其输出。 这使您可以实时观察输出的变化。 它会在每个时间间隔刷新输出,覆盖命令之前的输出。 默认情况下,该命令每两秒重复一次,并一直持续到您使用 Ctrl + C 手动停止为止。
观察命令语法
watch命令的语法是:
watch options <command>
有多种命令行选项可与 watch 命令一起使用。 如果您运行不带任何选项的 watch 命令,它将每两秒运行一次指定的命令。 例如,以下内容将显示 ls 命令的输出:
watch ls -l ~/
如果创建、删除文件或更改大小,输出将显示目录列表中的更改,同时每两秒刷新一次输出。
使用 watch 每 X 秒运行一次命令
您可以更改 watch 命令的更新间隔。 这意味着您可以告诉 watch 命令在重复该命令之前等待 x 秒。 要更改更新间隔,请使用 -n 选项,后跟时间间隔(以秒为单位)。
watch -n
例如,要每 5 秒运行一次命令,请运行:
watch -n 5 <command>
突出显示更新之间的更改
watch 命令会在每次刷新时覆盖其输出。 使用 -d 选项,您还可以突出显示先前输出和更新输出之间的更改。
watch -d
隐藏 watch 命令输出中的标题
默认情况下,watch 命令在每个输出的顶部显示一个标题,其中包含更新间隔、命令名称以及系统的当前日期和时间。 您可以使用 -t 选项从输出中去除标头:
watch -t <command>
出错时发出蜂鸣声
当 Linux 进程完成运行时,它会返回退出代码。 按照约定,该值为 0 表示成功,非零表示错误。 如果 watch 命令返回非零退出,则 watch 命令的 -b 选项会发出蜂鸣声。
假设您想要监视 sshd.service 并在服务停止时收到通知; 你会使用:
watch -b sudo systemctl status sshd.service
当服务停止时,此命令将发出蜂鸣声。 当服务恢复时,蜂鸣声将停止。 要对此进行测试,请打开另一个终端窗口并停止该服务。 这将发出持续的蜂鸣声,直到您再次启动服务。 但是,要使用此功能,您的系统上必须安装 beep 软件包。
输出更改时退出 watch 命令
您还可以告诉 watch 命令在命令的输出发生更改时停止运行并退出。 您可以使用 -g 选项来执行此操作。 当您等待输出中的某些更改时,此选项非常有用。
一旦输出发生变化,watch命令就会停止。 您可以将此用法与 echo 命令结合使用以在屏幕上显示消息。
例如,考虑这样一个场景:您正在等待文件到达您的目录。 以下命令将监视指定文件的目录。 一旦到达,watch 命令将停止运行,并且到达的消息文件将显示在终端上。
watch -g "ls -l | grep filename" && echo "file arrived"
另一个有用的示例是特定用户登录系统时的通知:
watch -g "who | grep username" && echo "username logged in"
此命令将监视 who 命令的输出,该命令列出了已登录的用户。用户登录后,watch 命令将停止并在终端上显示一条消息。
同样,当文件发生某些更改时,您可以告诉 watch 命令停止服务。 请记住,使用管道命令链时,您需要将整个命令括在引号内。
监视 Linux 系统中的活动
如果您发现自己重复执行相同的过程,请考虑使用 watch 命令来自动化它。 它使您无需频繁键入命令来查看已更改的内容。
您还可以将 watch 命令与其他 Linux 命令结合使用来监视系统资源和活动,并跟踪文件或目录的更改。