我有一个shell脚本打印一些统计信息,如磁盘信息,内存使用等。但它只在脚本运行和退出后显示一次信息。我可以重复运行此脚本(例如htop
)或类似的东西吗?我希望这个信息每5-10秒更新一次。
答案 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上的输入数据添加不同的例如读取。这将确保您在脚本不会被唤醒,直到某些要处理的数据存在,并且如果数据存在,脚本将不会花费任何时间唤醒。