Cron作业 - 每5秒运行一次

问题描述:

我想创建一个每5秒运行一次脚本的cron作业。看到cron作业只允许0-59分钟的增量等等。Cron作业 - 每5秒运行一次

我想创建另一个脚本,调用我下面写的原始脚本。

#!/bin/bash 

while true 
do 
# script in the same directory as this script. is this correct? 
bash makemehappy.sh 
sleep 1 
done 

我现在需要知道如何每次我启动我的电脑上运行此脚本,并为它如果因某些原因无法启动运行本身。

我也知道每分钟运行一次脚本不会是件好事。 :)

如果有更简单的方法每5秒运行一次脚本,请告知。

请谢谢。

+8

试图每5秒钟做一件事情真的是你的问题的最佳解决方案? – user347594 2010-07-26 00:59:15

我不会为此使用cron。我会使用该bash脚本(使用绝对路径,除非您希望它是可移植的,并且知道将保留目录结构)。

取而代之,我只是sleep 5,就像你一样(只有5秒而不是1)。

就您的系统启动而言,这取决于系统。在(某些)Linux发行版中,有一个名为/etc/rc.local的文件,您可以在其中添加脚本以在系统启动时运行。那么......我不应该这么一般,我用过的发行版都有这个。如果你正在运行Ubuntu,不再有inittab,它们使用新手,顺便说一句。

所以,如果你有一个无限循环,并在/etc/rc.local条目,那么你应该是它无休止地运行(或直到它遇到问题并退出)的黄金。

+0

我的发行版是ubuntu吗?我似乎无法在etc目录中找到该rc.local文件。 意见建议? – myusuf3 2010-07-26 01:05:12

+0

什么版本? (猫/ etc/issue) – Tim 2010-07-26 01:09:03

+0

10.04我设法弄明白了。 :)通过将其添加到init.d并更新update-rc.d – myusuf3 2010-07-26 02:13:49

尝试使用anacron或更好的方法是在计算机启动时启动init脚本。

如果您希望脚本“自行重启”,您需要每隔几分钟运行一次,以检查原稿是否仍在运行。这可以在inittab(/etc/inittab)或Ubuntu的/etc/event.d中完成。尝试man 5 inittab,看着'重生'选项。

某些cron有一个@reboot时间说明符(这涵盖了所有的时间和日期字段)。如果你的确如此,你可以使用它。如果这是一个“系统”服务(而不是为自己运行的服务),这里的其他解决方案可能会更好。

初始化脚本在引导时很好,但不检测进程是否失败并且必须重新启动。 supervisord在检测失败的进程并重新启动它们方面做得非常出色。我会推荐一个带有@Tim所描述的5秒循环的脚本,但是会围绕它包装supervisord以确保它能够持续运行。