watch:定期重复Linux / Unix命令

简介:

服务器管理员需要维护系统并保持更新和安全。每天需要运行大量的指令。有些系统进程会记录日志。这些日志不断更新。为了检查这些更新,需要重复地执行命令。比如,为了读取一个日志文件需要使用head、tail、cat等命令。这些命令需要重复地执行。而watch命令可以用于定期地执行一个命令。

Watch 命令

watch是一个简单的命令,只有几个选项。watch命令的基本语法是:

 
  1. watch [-dhvt] [-n <seconds>] [--differences[=cumulative]] [--help] [--interval=<seconds>] [--no-title] [--version] <command>

watch命令默认每隔2秒执行后面参数给出的命令。这个时间根据的是命令执行结束到上次执行的间隔来算的。比如,watch命令可以用于监测日志更新,更新是在文件的后面追加新的内容,因此可以用tail命令来检测文件的更新(LCTT 译注:可以直接使用 tail -f 主动跟踪某个文件的更新,而不用使用 watch。)。这个命令会持续地运行直到你按下 CTRL + C回到提示符。

例子

每两秒监测 errors/notices/warning 生成的情况。

 
  1. watch tail /var/log/messages

tail messages

tail messages

按指定的时间间隔监测磁盘的使用率。

 
  1. watch df -h

df -h

df -h

对磁盘管理员而言,关注高I/O等待导致的磁盘操作尤其是mysql事务是很重要的。

 
  1. watch mysqladmin processlist

processlist

processlist

监测服务器负载和运行时间。

 
  1. watch uptime

uptime

uptime

监测exim给用户发送通知的队列大小。

 
  1. watch exim -bpc

exim -bpc

exim -bpc

1) 指定延迟

 
  1. watch [-n <seconds>] <command>

命令默认运行的时间间隔可用-n改变,下面的命令会在5秒后运行后面的命令:

 
  1. watch -n 5 date

date 5 seconds

date 5 seconds

2) 连续输出比较

如果你使用-d选项,它会累次地高亮第一次和下一次命令之间输出的差别。

 
  1. watch [-d or --differences[=cumulative]] <command>

例子 1,用下面的命令连续地输出时间并观察高亮出来的不同部分。

 
  1. watch -n 15 -d date

第一次执行date的输出会被记录,15秒后会重复运行命令。

Difference A

Difference A

在下一次执行时,可以看到输出除了被高亮的秒数从14到29之外其他的都一样。

Difference A

Difference A

例子 2,让我们来体验一下两个连续的“uptime”命令输出的不同。

 
  1. watch -n 20 -d uptime

uptime

uptime

现在列出了时间和3个负载快照之间的不同。

10b

10b

3) 不带标题输出

如果你不希望显示更多关于延迟和实际命令的信息可以使用-t选项。

 
  1. watch [-t | --no-title] <command>

让我们看下下面例子命令的输出:

 
  1. watch -t date

watch without title

watch without title

Watch 帮助

可以在ssh中输入下面的命令来得到watch的简要帮助。

 
  1. watch -h [--help]

watch help

watch help

Watch 版本

在ssh终端中运行下面的命令来检查watch的版本。

 
  1. watch -v [--version]

version

version

不足

不幸的是,在终端大小调整时,屏幕不能在下次运行前重画。所有用--difference高亮的内容也会在更新时丢失。

总结

watch对系统管理员而言是一个非常强大的工具,因为它可以用于监控、日志、运维、性能和系统运行时的吞吐量。人们可以非常简单地格式化和推延watch的输出。任何Linux命令/程序或脚本可以按照所需监测和连续输出。



原文发布时间为:2015-07-07


本文来自云栖社区合作伙伴“Linux中国”

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
16天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
16天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
4天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
13天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
36 9
|
1天前
|
Ubuntu Linux Shell
linux免交互登陆远程主机并执行命令(密钥对和Expect)
linux免交互登陆远程主机并执行命令(密钥对和Expect)
|
1天前
|
Linux
【Linux】常用命令
【Linux】常用命令
20 0
|
1天前
|
安全 Ubuntu Linux
Linux 网络操作命令Telnet
Linux 网络操作命令Telnet
11 0
Linux 网络操作命令Telnet
|
2天前
|
Linux 数据安全/隐私保护
Linux常用命令实例带注释
Linux常用命令实例带注释
29 0
|
2天前
|
Linux 开发工具 数据安全/隐私保护
Linux(19)常用解压命令记录
Linux(19)常用解压命令记录
7 0
|
4天前
|
Linux Perl
Linux系统替换字符串常用命令
请注意,`sed`命令可以非常强大,可以根据不同的需求使用不同的选项和正则表达式来进行更复杂的字符串替换操作。
16 0