如何在Linux中使用watch命令呢?

电子说

1.2w人已加入

描述

有时,您需要反复运行命令或程序来监视系统的各个方面,如正在运行的进程、磁盘空间使用情况或用户登录情况。

Linux中的watch命令使您能够自动执行这些任务,而无需手动一遍又一遍地运行它们。

使用此命令,您可以实时监视系统活动,如用户登录、网络状态、内存和CPU使用情况、磁盘空间等。

让我们看看如何在Linux中使用watch命令。

什么是watch命令?

watch命令在Linux中反复运行指定的命令或程序,以固定时间间隔,并在终端中显示其输出。这使您能够实时观察输出的变化。它会在每个时间间隔刷新输出,覆盖上一个输出。默认情况下,该命令每两秒重复一次,直到您使用Ctrl + C手动停止它。

watch命令的语法

watch命令的语法如下:

 


watch 选项 <命令>
有各种可用于watch命令的命令行选项。如果您运行watch命令而没有任何选项,它将每隔两秒运行一次指定的命令。例如,以下命令将显示ls命令的输出:

watch ls -l ~/
  Linux

输出将显示目录列表中的更改,如果创建了文件、删除了文件或文件大小发生变化,它将每两秒刷新一次输出。

 

使用watch命令每隔X秒运行一个命令

您可以更改watch命令的更新间隔。这意味着您可以告诉watch命令在重复命令之前等待X秒。要更改更新间隔,请使用-n选项,后面跟随以秒为单位的时间间隔。

 


watch -n
  例如,要每隔5秒运行一次命令,请运行:

watch -n 5 
 

 

突出显示更新之间的变化

watch命令会在每次刷新时覆盖其输出。使用-d选项,您还可以突出显示先前输出和更新后输出之间的变化。

 


watch -d
 

 

隐藏watch命令输出中的标题

默认情况下,watch命令在每个输出的顶部显示一个标题,其中包含更新间隔、命令名称以及系统的当前日期和时间。您可以使用-t选项从输出中删除标题:

 


watch -t 
 

 

在错误时播放蜂鸣声

当Linux进程完成运行时,它会返回一个退出代码。按照惯例,成功时该值为0,非零表示错误。watch命令的-b选项会在命令返回非零退出代码时播放蜂鸣声。 假设您想要监视sshd.service,并在服务停止时收到通知,您可以使用:

 


watch -b sudo systemctl status sshd.service
该命令将在服务停止时发出蜂鸣声。当服务恢复运行时,蜂鸣声将停止。要使用此功能,您必须在系统上安装了beep软件包。

 

在输出更改时退出watch命令

您还可以告诉watch命令在命令的输出更改时停止运行并退出。您可以使用-g选项来实现这一点。在等待输出中的某些变化时,此选项非常有用。

一旦输出发生变化,watch命令将停止。您可以将此用法与echo命令结合使用,以在屏幕上显示消息。

例如,考虑一个场景,您正在等待一个文件出现在您的目录中。以下命令将监视指定文件的目录。

一旦出现,watch命令将停止运行,并且终端上将显示消息"file arrived"。

 


watch -g "ls -l | grep filename" && echo "file arrived"
  Linux

另一个有用的示例是在特定用户登录到系统时进行通知:

watch -g "who | grep username" && echo "username logged in"
此命令将监视who命令的输出,该命令列出已登录的用户。一旦用户登录,watch命令将停止并在终端上显示消息。

类似地,您可以告诉watch命令在文件中进行更改时停止服务。请注意,在使用一系列命令的管道链时,您需要将整个命令括在引号内。

 

监视Linux系统中的活动

如果您发现自己反复执行相同的流程,请考虑使用watch命令来自动化它。这可以使您免于频繁键入命令以查看发生了什么变化。

您还可以将watch命令与其他Linux命令一起使用,以监视系统资源和活动,并跟踪文件或目录中的更改。





审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分