用 Linux 的 watch 命令观察命令和任务

系统 Linux
了解 watch 命令如何让你知道任务已完成或命令已执行。watch 命令对于许多临时性的系统管理任务非常有用,在这些任务中,你需要在没有进度条的情况下等待一些耗时的步骤,然后再进入下一个步骤。

[[425071]]

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

有很多时候,你需要等待一些事情的完成,比如:

  • 一个文件的下载。
  • 创建或解压一个 tar 文件。
  • 一个 Ansible 作业。

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

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

你可以用这样的命令查询所有这些:

  1. $ ls -l downloaded-file
  2. $ find . | wc -l
  3. $ podman ps
  4. $ docker ps

但是反复运行这些命令,即使是利用 Bash 历史 和向上箭头的便利,也是很乏味的。

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

  1. while :
  2. do
  3. docker ps
  4. sleep 2
  5. done

但这样的脚本写起来也会很繁琐。你可以写一个小的通用脚本,并将其打包,这样它就可以一直被你使用。幸运的是,其他开源的开发者已经有了这样的经验和做法。

那就是 watch 这个命令。

安装 watch

watch 命令是 procps-ng 包的一部分,所以如果你是在 Linux 上,你已经安装了它。

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

使用 watch

watch 命令定期运行一个命令并显示其输出。它有一些文本终端的特性,所以只有最新的输出才会出现在屏幕上。

最简单的用法是:watch <command>

例如,在 docker ps 命令前加上 watch,就可以这样操作:

  1. $ watch docker ps

用 watch 命令,以及一些创造性的 Unix 命令行技巧,可以生成临时的仪表盘。例如,要计算审计事件:

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

在最后一个例子中,如果有一个可视化的指示,表明审计事件的数量发生了变化,这可能是有用的。如果变化是预期的,但你想让一些东西看起来“不同”,watch --differences 就很好用。它可以高亮显示与上次运行的任何差异。如果你在多个文件中搜索,这一点尤其有效,所以你可以很容易地看到哪个文件发生了变化。

如果没有预期的变化,你可以使用 watch --differences=permanent 要求它们被“永久”高亮显示,以便知道哪些变化需要调查。这通常是更有用的。

控制频率

最后,有时该命令可能是资源密集型的,不应运行得太频繁。-n 参数控制频率。watch 默认使用 2 秒间隔,但是 watch -n 10 可能适合于资源密集型的情况,比如在子目录的任何文件中搜索一个模式:

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

用 watch 观察一个命令

watch 命令对于许多临时性的系统管理任务非常有用,在这些任务中,你需要在没有进度条的情况下等待一些耗时的步骤,然后再进入下一个步骤。尽管这种情况并不理想,但 watch 可以使情况稍微好转。它让你有时间为工作做回顾性笔记!"。下载 备忘录,让有用的语法和选项触手可及。 

 

责任编辑:庞桂玉 来源: Linux中国
相关推荐

2022-05-07 09:30:08

watchtailLinux 系统

2022-01-17 10:05:33

LinuxWatch命令

2021-08-23 15:14:09

Linuxat命令任务

2010-06-23 16:09:40

Linux Bash

2010-07-15 14:54:51

at命令crontab定时执行任务

2017-03-01 13:36:14

Linuxchattr命令chgrp命令

2009-08-11 08:58:19

linux命令浏览网页linux命令行参数linux命令行

2020-04-10 09:56:12

at命令Linux安排任务

2010-01-20 10:27:16

Linuxcrond命

2010-07-20 17:55:15

Linux Telne

2010-01-06 11:24:27

Linux命令

2021-12-19 22:13:46

Linux命令网页图片

2018-04-16 10:12:46

Linux命令gunzip

2016-12-27 19:29:14

Linux命令定时任务

2009-08-11 10:34:41

linux中du命令参linux命令行参数linux命令行

2010-09-06 17:20:59

Linux PPPoE

2021-11-01 10:05:32

Linuxsusudo

2010-08-03 09:53:50

Linux NFS

2021-09-21 15:28:33

LinuxSed智能引号

2009-08-03 11:54:34

linux at命令linux at命令详cron
点赞
收藏

51CTO技术栈公众号