watch命令用于周期性的执行命令,且打印在一个屏幕中!超过一个屏幕将无法显示!
免去单行while或for的语句来说很是方便,但如果打印输出超出一个屏幕将无法显示,所以需要根据环境去使用这个命令。
命令格式
watch [参数] [命令]
命令参数
- -n或–interval 缺省每2秒运行一下程序,可以用-n或-interval来指定间隔周期
- -d或–differences 选项watch 会高亮显示变化的区域
- -d=cumulative选项会把变动过的区域(不管最近的那次有没有变动)都高亮显示出来。
- -t 或-no-title 关闭watch命令在顶部的时间。
- -h, –help 查看帮助文档
范例:循环显示当前时间
使用while来循环显示时间,需要sleep
while true;do echo `date '+%Y-%m-%d %H:%M:%S'`;sleep 1;done
下面使用watch来循环显示时间
1.空命令执行后,顶行右上角显示时间,默认间隔周期为2秒
watch ""
2.调整,输出指定格式的时间戳:yyyy-mm-dd HH:MM:SS
#日期和时间中间有空格,需要引号
watch -n1 "date '+%Y-%m-%d %H:%M:%S'"
3.再次调整,不显示顶行的watch提示执行内容及自带的时间戳(加入-t参数)
watch -tn1 "date '+%Y-%m-%d %H:%M:%S'"
范例:循环显示平均负载
#默认2秒刷新一次,-d参数用于高亮变化区域
watch -d uptime
范例:循环显示内存使用状态
watch -n1 free
拓展:
因此watch可以免去我们的循环写法,但鉴于只能打印一个屏幕,在grep关键字段时,需要注意不能超时屏幕行数,或者tail时不能加-f
发表评论