如何在Linux上使用Watch命令定期运行程序

有时,您需要重复运行命令或程序来监视系统的各个方面,例如正在进行的进程、磁盘空间使用或用户登录。Linux watch命令允许您自动执行这些任务,而不必反复手动运行它们。

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

什么是监视司令部?

Watch Linux命令定期重复运行指定的命令或程序,并在终端中显示其输出。这使您可以实时观察输出中的更改。它在每个时间间隔刷新输出,覆盖命令以前的输出。默认情况下,该命令每两秒重复一次,并一直持续到您使用Ctrl+C手动停止它为止。

观看命令

Watch命令的语法为:

监视选项命令<> 

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

手表ls—l~/ 

如果文件被创建、删除或大小改变,输出将显示目录列表中的更改,同时每两秒钟刷新一次输出。

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

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

手表—n  

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

watch—n5命令<> 

突出显示更新之间的更改

watch命令在每次刷新时覆盖其输出。使用—d选项,还可以突出显示上一个输出和更新输出之间的更改。

watch—d 

在Watch命令的输出中隐藏标头

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

watch—t命令<> 

错误时播放蜂鸣声

当一个Linux进程完成运行时,它返回一个退出代码。按照惯例,成功时的值为0,而非零表示错误。如果命令返回非零退出,则watch命令的—b选项将播放蜂鸣声。

假设您想要监视sshd.service并在服务停止时得到通知;您将使用:

watch—b sudo systemctl status sshd. service 

当服务停止时,此命令将发出蜂鸣声。服务恢复时,蜂鸣声将停止。要测试这个问题,请打开另一个终端窗口并停止服务。这将发出持续的哔哔声,直到您再次启动服务。但是,要使用此功能,您必须在系统上安装哔哔声包。

输出更改时退出监视命令

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

一旦输出改变,watch命令将停止。您可以将这种用法与echo命令结合起来在屏幕上显示消息。

例如,考虑一个场景,您正在等待文件到达目录中。下面的命令将监视指定文件的目录。当它到达时,watch命令将停止运行,到达的消息文件将显示在终端上。

Watch-g“ls-L|grep文件名”&amp;&amp;ECHO“文件已到达” 

另一个有用的示例是当特定用户登录到您的系统时发出通知:

watch—g "who| grep用户名"echo"用户名已登录"&& 

该命令将监视谁命令的输出,该命令列出已登录的用户。一旦用户登录,Watch命令将停止并在终端上显示一条消息。

类似地,当文件中发生某些更改时,您可以告诉watch命令停止服务。请记住,当使用管道命令链时,您需要将整个命令用引号括起来。

查看您的Linux系统中的活动

如果你发现自己重复执行同一个过程,考虑使用watch命令来自动执行,这样你就不必频繁地输入命令来查看发生了什么变化。

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