使用 Linux watch 命令监视命令和任务使用 Linux watch 命令监视命令和任务使用 Linux watch 命令监视命令和任务使用 Linux watch 命令监视命令和任务
  • 业务
  • 目标
  • 支持
  • 关于
  • 联系我们
  • 登录
✕

使用 Linux watch 命令监视命令和任务

发表 admin at 2025年2月28日
类别
未分类
标签

了解 watch 命令如何让您知道任务何时完成或命令何时执行。

很多时候你需要等待某件事完成,例如:

  • 文件下载。
  • 创建或提取 tar 文件。
  • 一份 Ansible 工作。

其中一些进程具有某种进度指示,但有时该进程是通过抽象层运行的,衡量进度的唯一方法是通过其副作用。其中一些可能是:

  • 正在下载的文件不断增长。
  • 从 tarball 中提取的目录充满了文件。
  • Ansible 作业构建一个容器。

您可以使用如下命令查询所有这些内容:

$ ls -l downloaded-file
$ find . | wc -l
$ podman ps
$ docker ps

但是,即使借助 Bash 历史记录和向上箭头的便利,一遍又一遍地运行这些命令也是乏味的。

另一种方法是编写一个小 Bash 脚本来自动执行这些命令:

while :
do
  docker ps
  sleep 2
done

但这样的脚本写起来也会变得乏味。您可以编写一些通用脚本并将其打包,以便您始终可以使用它。幸运的是,其他开源开发人员已经做到了这一点。

结果是命令watch。

安装手表

watch 命令是 procps-ng 软件包的一部分,因此如果您使用的是 Linux,则已经安装了它。

在 macOS 上,使用 MacPorts 或 Homebrew 安装 watch。在 Windows 上,使用 Chocolatey。

使用手表

watch 命令定期运行命令并显示其输出。它有一些文本终端的细节,因此屏幕上只会显示最新的输出。

最简单的用法是:watch 。

例如,为 docker ps 命令添加 watch 前缀,效果如下:

$ watch docker ps

watch 命令和一些创造性的 Unix 命令行技巧可以生成临时仪表板。例如,要对审计事件进行计数:

$ watch 'grep audit: /var/log/kern.log |wc -l'

在最后一个示例中,如果有一个视觉指示表明审核事件的数量发生了变化,这可能会很有用。如果预期会发生变化,但您希望某些东西看起来“不同”,那么 watch --differences 效果很好。它突出显示与上次运行的任何差异。如果您在多个文件中进行 grep 操作,此功能尤其有效,因此您可以轻松查看哪个文件发生了更改。

如果不需要更改,您可以要求“永久”突出显示这些更改,以了解要使用 watch --differences=permanent 来调查哪些更改。这通常更有用。

控制频率

最后,有时该命令可能会占用大量资源,因此不应运行得太频繁。 -n 参数控制频率。 Watch 默认使用两秒,但 watch -n 10 可能适合资源密集型的情况,例如在子目录中的任何文件中 grep 查找模式:

$ watch -n 10 'find . -type f | xargs grep suspicious-pattern'

使用 watch 观看命令

watch 命令对于许多临时系统管理任务非常有用,在这些任务中,您需要等待一些耗时的步骤(没有进度条),然后才能继续下一个任务。虽然这不是一个很好的情况,watch 可以让它稍微好一点,并让您有时间开始处理这些笔记以进行回顾!下载备忘单以随时掌握有用的语法和选项。

©2015-2025 Norria support@norria.com