如何每N秒重复运行bash脚本?

时间:2014-08-06 10:09:49

标签: linux bash

我有一个shell脚本打印一些统计信息,如磁盘信息,内存使用等。但它只在脚本运行和退出后显示一次信息。我可以重复运行此脚本(例如htop)或类似的东西吗?我希望这个信息每5-10秒更新一次。

3 个答案:

答案 0 :(得分:21)

在linux中,您可以使用watch程序重复操作。假设script.sh是可执行的:

watch -n 10 path/to/script.sh

每隔10秒运行一次。

要使脚本可执行,您可以使用chmod +x script.sh。不要忘记添加shebang

#!/bin/bash

到第一行(假设它是一个bash脚本)。

如果您从当前目录运行脚本,则可以执行以下操作:

watch -n 10 ./script.sh

答案 1 :(得分:20)

我的评论略有改进:如果您的脚本以 true 退出(例如,当它以exit 0结尾时),您可以运行

while script; do sleep 10; done

这是重复命令的规范方法,只要它不会失败。

答案 2 :(得分:0)

如评论中所述,您需要将脚本包装在无条件循环中:

while :; do script; sleep 10; done

根据脚本逻辑而不是sleep 10,您可能希望为文件/套接字stdin上的输入数据添加不同的例如读取。这将确保您在脚本不会被唤醒,直到某些要处理的数据存在,并且如果数据存在,脚本将不会花费任何时间唤醒。