[英]How to repeatedly run bash script every N seconds?
我有一个 shell 脚本打印一些统计信息,如磁盘信息、memory 使用等。 但它只在脚本运行和退出后显示一次信息。 我可以让这个脚本重复运行(例如htop
)或类似的东西吗? 我希望此信息每 5-10 秒更新一次。
在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
我的评论略有改进:如果您的脚本以true退出(例如,当它以exit 0
出头结束时),您可以运行
while script; do sleep 10; done
这是重复命令的规范方法,只要它不会失败。
如评论中所述,您需要将脚本包装在无条件循环中:
while :; do script; sleep 10; done
根据脚本逻辑而不是sleep 10,您可能希望将不同的例如读取 - 用于文件/套接字stdin上的输入数据。 这将确保您在脚本不会被唤醒,直到某些要处理的数据存在,并且如果数据存在,脚本将不会花费任何时间来唤醒。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.