如何每5秒运行一次脚本?

我有一个需要每五秒运行一次的脚本。 我知道cron可以在一分钟内完成任务,但有没有办法每秒运行一次?

Cron只允许至少一分钟。 你可以做的是编写一个带有无限循环的shell脚本来运行你的任务,然后睡5秒钟。 这样,您的任务将每5秒运行一次或多或少,具体取决于任务本身需要多长时间。

 #!/bin/bash while true; do # Do something sleep 5; done 

您可以使用上面的内容创建my-task.sh文件,并使用sh my-task.sh运行它。 您可以选择将超级用户配置为服务,以便在系统启动时启动等。

这听起来确实像你在做一些你可能不应该做的事情。 这感觉不对

您可以每分钟启动一个cron作业启动脚本,从而启动12个后台进程:

 * * * * * ~/dostuff.sh 

dostuff.sh

 (sleep 5 && /path/to/task) & (sleep 10 && /path/to/task) & (sleep 15 && /path/to/task) & (sleep 20 && /path/to/task) & (sleep 25 && /path/to/task) & (sleep 30 && /path/to/task) & (sleep 35 && /path/to/task) & (sleep 40 && /path/to/task) & (sleep 45 && /path/to/task) & (sleep 50 && /path/to/task) & (sleep 55 && /path/to/task) & (sleep 60 && /path/to/task) & 

不过,我的问题是,你在做什么,你需要每隔5秒运行一次吗?

只需使用一个循环:

 while true ; do ./your-script & sleep 5; done 

这将启动您的脚本作为后台作业,睡眠5秒,然后再次循环。 您可以使用Ctrl-C中止它,或使用任何其他条件而不是true ,例如! test -f /tmp/stop-my-script ! test -f /tmp/stop-my-script仅在文件/tmp/stop-my-script不存在时循环。

你可以使用GNU包mcron ,一个“Vixie cron”替代品。

http://www.gnu.org/software/mcron/manual/mcron.html#Top

“可以轻松地指定更精细的时间点,即秒。原则上,这可以延长到微秒,但这没有实现。”

cron中的最小配置是分钟,您不能将其设置为5秒。 你可以使用允许秒数的Quartz。 http://www.quartz-scheduler.org/docs/tutorials/crontrigger.html

使用cacti监控路由器和交换机,但Cron只允许至少一分钟,因此如果一个端口/设备关闭,则在两分钟之前没有警告。

我已经非常成功地做了这种事情(并且最终结果一次几周,直到机器重新启动)。 至于我现在正在做什么,更新信息并将其放入缓存 – 每10秒更新一次。

 #!/bin/sh SLEEP=5 # do stuff sleep $SLEEP # do stuff sleep $SLEEP # do stuff sleep $SLEEP # do stuff sleep $SLEEP # echo and restart... exec $0 

‘exec $ 0’重新启动脚本,但替换正在运行的脚本。 它最初可以使用crontab’@reboot’行启动。