Contents

Linux中以给定的间隔重复命令

1. 概述

在本教程中,我们将学习如何使用命令行每隔 X 秒自动重复任何 Linux 命令

这对于自动化需要连续执行的任务特别有用。另一个用例是定期检查各种系统健康参数,以确保一切按预期工作。

2. Linux watch命令

考虑到这个目的,我们将仔细研究Linux watch 命令。由于watch命令是procps包的一部分,我们会发现它默认安装在几乎每个 Linux 系统上。因此,不需要安装。 watch命令默认每两秒执行一次提供的命令,并全屏显示输出。

在最基本的情况下,我们只通过传递我们想要执行的命令作为唯一参数来调用watch

watch date

/uploads/repeat_command_at_an_interval/1.png

我们可以在这里看到几件事:在左上角,我们找到了当前的执行频率。在这种情况下,它是两秒。在右上角,我们找到主机名和当前日期。最后,在此之下,我们找到了我们调用的命令的输出,它恰好也是当前日期。每当经过两秒时,就会更新此输出。

3. 配置选项

显然,我们可以使用几个命令行参数来根据自己的喜好自定义此输出。

更改执行频率,我们使用*-n*参数后跟执行之间的秒数:

watch -n 60 df -h

/uploads/repeat_command_at_an_interval/2.png

该命令将每分钟执行一次df -h,向我们显示硬盘上的磁盘使用情况。

为了将这个相当广泛的输出限制到相关行,我们将使用管道。

每当我们想在传递给watch的命令中使用管道时,我们需要将整个命令括在引号中

watch -n 60 'df -h | grep /sda'

/uploads/repeat_command_at_an_interval/3.png

现在我们只显示*/dev/sda1* 上的磁盘使用情况,它每分钟刷新一次。

如果我们对输出第一行的信息不感兴趣,可以使用*-t*选项禁用标题栏

watch -t date

/uploads/repeat_command_at_an_interval/4.png

最后,我们可以使用*-d*选项来动态突出显示我们感兴趣的命令的不同执行之间的差异。

free 命令是一个很好的尝试,以便看到它的实际效果:

watch -d free