周期执行命令,并全屏显示输出
命令语法格式
watch [options] command
命令描述
命令watch反复运行命令,显示其输出和错误(第一次屏幕显示)。 这使您可以观察程序的输出随时间的变化。 默认情况下,命令每2秒运行一次,watch将一直运行直到被中断。
命令支持的选项及含义
-d, –differences [permanent]
突出显示连续更新之间的差异。如果使用了可选参数permanent,则永久性显示高亮部分,这样的话可以看到从第一次开始都发生了那些变化。
-n, –interval seconds
指定更新间隔。不允许小于0.1。默认情况下,程序每2秒运行一次。watch将一直运行到被中断。
-p, –precise
精确地每隔interval秒尝试运行command,重点是精确的。尝试运行ntptime,并注意小数秒的值,你会发现几乎是相同。没有使用该选项的时候,你会发现小数秒的增幅会很大。
-t, –no-title
不显示开头的时间、命令、空白行等内容,仅仅显示输出。
-b, –beep
当命令以非零退出时,发出声音进行提示。
-e, –errexit
命令执行出错的时候,停止更新界面,并在按键后退出。
-g, –chgexit
当命令的输出发生变化的时候,退出。
-c, –color
如果输出中有ANSI颜色字符串及样式序列,则对其进行显示。可以对比这两条命令的输出:
# watch -n 1 -c “echo ‘\033[01;31m#####\033[00m'”
有关ANSI颜色代码可以参考:http://pueblo.sourceforge.net/doc/manual/ansi_color_codes.html
-x, –exec
将命令传递给exec(2)执行,而不是使用sh -c执行命令,减少需要使用额外的引号来获得期望的效果。
-h, –help
显示帮助信息并退出。
-v, –version
显示版本信息并退出。
注意事项
使用POSIX选项处理(即,选项处理在第一个非选项参数处停止)。这意味着command之后的标志不会被watch本身解释。
终端调整大小后,屏幕将无法正确重新绘制,直到下一次计划更新。所有–differences突出显示的内容在该更新时也会丢失。
从程序输出中删除非打印字符。如果要查看它们,请使用“cat -v”作为命令管道的一部分。
组合字符应该在屏幕最后一列的字符上显示的字符可能会提前显示一列,或者根本不显示。
在–differences模式中,组合字符永远不会被视为不同进行统计。只有基本字符才算。
在最后一列结束的行之后的空白行,将不显示。
在–precise模式还没有先进的时间失真技术(用于补偿执行时间超过间隔秒的命令)。 watch也可以进入一种状态,它可以快速触发尽可能多的命令执行,以便从先前执行的时间超过间隔的时间内赶上(例如,netstat在DNS查找上花费时间)。
退出状态
0 成功。
1 各种失败。
2 分支到watch的进程失败。
3 使用“写入端管道”替换“子进程的标准输出”失败。
4 命令执行失败。
5 关闭子进程写入管道失败。
7 IPC管道创建失败。
8 使用waitpid(2)获取子进程返回值失败,或者命令在出错时退出。
other 命令watch将执行的命令的退出状态作为子退出状态传播。
使用示例
要查看邮件:
检测目录内容的变化:
如果您只对用户joe拥有的文件感兴趣,可以使用:
要查看引用的效果:
# watch echo ‘$$’
# watch echo “‘”‘$$'”‘”
要查看精确计时的效果,请尝试添加-p选项:
您可以注意管理员安装最新的内核:
(请注意,-p不能保证在重新启动时工作,特别是面对ntpdate或其他”启动时间更改(bootup time-changeing)“机制)
参考文献
- man 1 watch, Version 23.3.15-2
更新日志
- 07/16/2017 创建文章
- 09/27/2018 重新调整文章内容