在终端中每隔 x 时间间隔重复一个命令?

在终端中每隔 x 时间间隔重复一个命令?

我怎么能够重复每隔一段时间运行一个命令,这样我就可以为检查 或者监控 目录?

不需要脚本,我只需要在终端中执行一个简单的命令。

答案1

您可以使用 watch命令,手表用于定期运行任何指定的命令。

打开终端并输入:

watch -n x <your command>

改变X为您想要的秒数。

有关使用watch命令及其选项的更多帮助,请运行man watch或访问此关联

例如 :下面将列出每一个60 年代,在同一个终端上,桌面目录的内容,以便您可以知道是否发生了任何更改:

watch -n 60 ls -l ~/Desktop

答案2

除了nux 的回答

while true; do <your_command>; sleep <interval_in_seconds>; done

例子:

while true; do ls; sleep 2; done

ls此命令将以2秒的间隔打印输出。

使用Ctrl+C来停止该进程。

有几个缺点watch

  • 它不能使用任何别名命令。
  • 如果任何命令的输出很长,滚动就无法正常工作。
  • 设置有些麻烦最大时间间隔超出某个值。
  • watch-c将使用或选项传递转义字符来解释 ANSI 颜色序列--color。例如,的输出pygmentize将有效,但对于将失败ls --color=auto

在上述情况下,这看起来可能是更好的选择。

答案3

只是想参与苏拉夫 c.'沙马努斯的答案:

  1. 虽然watch在 Ubuntu 上可以完美运行,但如果您希望您的“Unix-fu”纯粹,您可能希望避免这种情况。例如,在 FreeBSD 上,watch有一个命令“监听另一个 tty 线路”。

  2. while true; do command; sleep SECONDS; doneCtrl还有一个警告:使用+可能会更难终止你的命令C。你可能更喜欢:

    while sleep SECONDS; do command; done
    

    它不仅更短,而且更容易中断。需要注意的是,它会先休眠,然后运行你的命令,因此你需要等待一段时间SECONDS才能第一次执行命令。

答案4

您可以使用 crontab。运行该命令crontab -e并使用您喜欢的文本编辑器打开它,然后添加此行

*/10 * * * *  /path-to-your-command

这将每 10 分钟运行一次命令

* */4 * * *  /path-to-your-command

这将每 4 小时运行一次命令

另一个可能的解决方案

$ ..some command...; for i in $(seq X); do $cmd; sleep Y; done

X重复的次数。

等待重复的时间。

例子 :

$ echo; for i in $(seq 5); do $cmd "This is echo number: $i"; sleep 1;done

相关内容