很多时候您需要等待某些事情完成,例如
其中一些过程会有某种进度指示,但有时该过程通过抽象层运行,衡量进度的唯一方法是通过其副作用。其中一些可能是
- 正在下载的文件不断增大。
- 从 tarball 解压的目录逐渐填充文件。
- Ansible 任务构建一个 容器。
您可以使用如下命令查询所有这些内容
$ ls -l downloaded-file
$ find . | wc -l
$ podman ps
$ docker ps
但是一遍又一遍地运行这些命令,即使借助 Bash 历史记录 和 向上箭头 的便利,也很乏味。
另一种方法是编写一个小型的 Bash 脚本来为您自动化这些命令
while :
do
docker ps
sleep 2
done
但是,编写这样的脚本也可能变得乏味。您可以编写一个小的通用脚本并将其打包,以便您始终可以使用它。幸运的是,其他开源开发人员已经做过了。
结果就是 watch
命令。
安装 watch
watch
命令是 procps-ng
软件包 的一部分,因此如果您使用的是 Linux,则已经安装了它。
在 macOS 上,使用 MacPorts 或 Homebrew 安装 watch
。在 Windows 上,使用 Chocolatey。
使用 watch
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 默认使用两秒,但对于更资源密集型的操作,例如在子目录中的任何文件中 grep 模式,watch -n 10
可能更合适
$ watch -n 10 'find . -type f | xargs grep suspicious-pattern'
使用 watch 监视命令
watch
命令对于许多临时的系统管理任务非常有用,在这些任务中,您需要等待一些耗时的步骤完成(没有进度条),然后才能继续下一步。尽管这种情况不太好,但 watch
可以使其稍微好一些——并让您有时间开始编写回顾会的笔记!下载速查表 ,方便查阅有用的语法和选项。
评论已关闭。