【问题标题】:How to repeatedly run bash script every N seconds?如何每 N 秒重复运行 bash 脚本?
【发布时间】:2014-09-29 05:26:22
【问题描述】:

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

【问题讨论】:

  • 如果每分钟运行一次就足够了,你可以使用 coron 来运行你的脚本。否则你必须做一些循环并像服务一样实际运行你的脚本。 stackoverflow.com/questions/3430330/…
  • 是的,但它每次都会关闭当前的 tty。我的意思是不关门就上班……
  • while :; do script; sleep 10; done包装你的脚本(或其内容)怎么样?
  • @Jens,好主意!我会试试这个)谢谢!

标签: linux bash


【解决方案1】:

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

while script; do sleep 10; done

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

【讨论】:

  • 我的变体看起来像这样:while true; do 代码在这里... sleep 10 done 它运行良好!
  • @alexkowalski 完美!下一步是通过单击箭头下方的复选标记接受您最喜欢的答案。
  • 我有一个 python 脚本,它提供名为 test.png 的输出。是否可以更改每个输出的名称(10 秒后),例如 test.png、tes1.png、tes2.png ....?
  • @user1883491 是的;但这是一个完全不同的问题。您必须引入一个变量,例如 i=0,并在循环中使用 : $((++i)) 递增它。
  • 这一层是上等的,而睡眠1;做回声“嗨”;完成 - 发现于unix.stackexchange.com/questions/10646/…
【解决方案2】:

在 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

【讨论】:

  • 是的,它也有效,但我必须额外使用“sh”! watch -n 10 sh script.sh
  • 或者您可以在脚本顶部添加 shebang #!/bin/bash 并使其可执行。请注意,一般来说,如果您的意思是 bash,请不要使用 sh,因为它可能是不同的 shell。
  • 我是作为例子写的,但是如果我使用 watch -n 10 而不使用 shbash 它不起作用(
  • 您的脚本可执行吗?试试chmod +x script(不要忘记添加我上面所说的shebang)。如果脚本在当前目录,可能还需要使用watch -n 10 ./script
  • 这不适用于 ll 等 bash 命令。来自unix.stackexchange.com/questions/10646/… 的这一行更出色 - 而 sleep 1;做回声“嗨”;完成
猜你喜欢
  • 2014-06-27
  • 2013-02-23
  • 2018-09-24
  • 1970-01-01
  • 2019-01-05
  • 1970-01-01
  • 2019-06-24
  • 1970-01-01
  • 2011-03-24
相关资源
最近更新 更多