以给定间隔重复执行 Linux 命令


Linux 是一款强大的操作系统,提供各种命令行工具来执行各种任务。其中一项经常需要执行的任务是以给定间隔重复执行命令。此功能出于多种原因可能很有用,例如监视系统性能、运行计划任务和执行备份。

在本文中,我们将探讨如何在 Linux 中以给定间隔重复执行命令。我们将讨论实现此目的的各种方法,包括使用 cron 实用程序、watch 命令和 sleep 命令。

使用 Cron 重复执行命令

cron 实用程序是类 Unix 操作系统(包括 Linux)中的基于时间的作业调度程序。它允许用户通过将任务计划为在指定间隔运行来自动执行各种任务。要使用 cron 实用程序重复执行命令,请按照以下步骤操作 -

  • 步骤 1 - 通过运行以下命令打开 crontab 文件 -

$ crontab -e

这将在您的默认文本编辑器中打开 crontab 文件。

  • 步骤 2 - 通过指定要重复的命令以及要运行的间隔来添加新的 cron 作业。例如,如果您想每 5 分钟运行一次 ls 命令,请将以下行添加到 crontab 文件中 -

*/5 * * * * ls

上述 cron 表达式指定应每 5 分钟运行一次 ls 命令。五个星号分别表示以下字段 -

  • 第一个字段表示命令应运行的分钟(0-59)。

  • 第二个字段表示命令应运行的小时(0-23)。

  • 第三个字段表示命令应运行的月份中的日期(1-31)。

  • 第四个字段表示命令应运行的月份(1-12)。

  • 第五个字段表示命令应运行的星期几(0-6,其中 0 为星期日)。

  • 步骤 3 - 保存并关闭 crontab 文件。

以上示例将每 5 分钟运行一次 ls 命令。您可以修改 cron 表达式以满足您的需求。

使用 Watch 命令重复执行命令

watch 命令是一个实用程序,允许用户重复运行命令并在终端上实时显示输出。要使用 watch 命令重复执行命令,请按照以下步骤操作 -

  • 步骤 1 - 打开终端并键入以下命令 -

$ watch -n <interval> <command>

将 <interval> 替换为您希望命令重复的时间间隔(以秒为单位)。将 <command> 替换为您要重复的命令。

例如,如果您想每 5 秒运行一次 top 命令,请键入以下命令 -

$ watch -n 5 top

上述命令将每 5 秒运行一次 top 命令,并在终端上显示输出。

  • 步骤 2 - 要停止 watch 命令,请按 Ctrl+C。

watch 命令可用于监视系统性能或监视长时间运行命令的输出。

使用 Sleep 命令重复执行命令

sleep 命令是一个实用程序,它使 shell 等待指定时间,然后再执行下一个命令。要使用 sleep 命令重复执行命令,请按照以下步骤操作 -

  • 步骤 1 - 打开终端并键入以下命令 -

$ while true; do <command>; sleep <interval>; done

将 <command> 替换为您要重复的命令。将 <interval> 替换为您希望命令重复的时间间隔(以秒为单位)。

例如,如果您想每 5 秒运行一次 date 命令,请键入以下命令 -

$ while true; do date; sleep 5; done

上述命令将每 5 秒运行一次 date 命令。

  • 步骤 2 - 要停止命令,请按 Ctrl+C。

sleep 命令可用于执行备份或运行其他计划任务。

以下是一些在给定间隔重复执行 Linux 命令的其他提示和示例 -

使用 at 命令

at 命令是一个实用程序,允许您安排命令在特定时间运行。要使用 at 命令以给定间隔重复执行命令,请按照以下步骤操作 -

  • 步骤 1 - 打开终端并键入以下命令 -

$ echo "<command>" | at now + <interval>

将 <command> 替换为您要重复的命令。将 <interval> 替换为您希望命令重复的时间间隔(以分钟或小时为单位)。

例如,如果您想每 30 分钟运行一次 ls 命令,请键入以下命令 -

$ echo "ls" | at now + 30 minutes

上述命令将每 30 分钟运行一次 ls 命令。

  • 步骤 2 - 要停止命令,请使用 atq 命令列出作业,然后使用 atrm 命令删除作业。

使用 Bash 脚本

您还可以使用 bash 脚本以给定间隔重复执行命令。为此,请按照以下步骤操作 -

  • 步骤 1 - 打开文本编辑器并创建一个新文件。键入以下代码 -

#!/bin/bash
while true
do
   <command>
   sleep <interval>
done

将 <command> 替换为您要重复的命令。将 <interval> 替换为您希望命令重复的时间间隔(以秒为单位)。

例如,如果您想每 5 秒运行一次 date 命令,请键入以下代码 -

#!/bin/bash

while true
do
   date
   sleep 5
done
  • 步骤 2 - 使用 .sh 扩展名保存文件,例如 repeat_command.sh。

  • 步骤 3 - 通过运行以下命令使脚本可执行 -

$ chmod +x repeat_command.sh
  • 步骤 4 - 通过键入以下命令运行脚本 -

$ ./repeat_command.sh

上述命令将运行 bash 脚本,该脚本将以给定间隔运行指定的命令。

组合命令

您还可以组合多个命令并在给定间隔运行它们。例如,要每 5 分钟运行一次 free 命令和 df 命令,请键入以下命令 -

$ while true; do free; df; sleep 300; done

上述命令将每 5 分钟运行一次 free 命令和 df 命令。

结论

以给定间隔重复执行 Linux 命令对于各种任务可能很有用,包括监视系统性能、运行计划任务和执行备份。在本文中,我们探讨了实现此目的的各种方法,包括使用 cron 实用程序、watch 命令和 sleep 命令。每种方法都有其优点和缺点,因此请选择最适合您需求的方法。

请记住,在终端中运行命令时始终要谨慎,并在执行命令之前确保您了解每个命令的作用。通过本文获得的知识,您现在可以轻松地在给定间隔重复执行 Linux 命令。

更新于: 2023-03-14

13K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告