我有一个CentOS 5.11的盒子,现在我必须使用它 – 在一个制作环境中,我不能真正把它推到CentOS 6,至less有一段时间。 我必须对这个项目产生低影响,不能搞乱这个生产箱子。
我有一个脚本,称之为/ my / foo。 现在,该脚本每3分钟从cron运行一次 – 它实际上运行如下:
* / 3 * * * * / my / foo myparam
问题是,脚本通常只需要几秒钟的运行,然后我们浪费了将近3分钟的时间。 但是,我们一次只能运行一个实例(实际上,如果exception导致运行时间超过3分钟,我们已经有了一个漏洞)。 有时脚本可能有很多东西要做,需要2分钟,因此我们已经设置了3个左右。
我们真正要做的就是保证这个脚本的一个实例(只有一个)“无限地”运行(循环),最有可能的是,我们将popup一个“睡眠30”来保持它太有侵略性 脚本本身不是一个循环 – 这是一个一个脚本的脚本。 但是,我们绝对会在99%的情况下浪费大量的时间,只能从cron每3分钟运行一次。 需要2分钟的情况下,有1%意味着我们花费了99%的情况下,当它可以再次运行,并完成更多的工作。
所以我们认为这可能是一个不错的伎俩,现在用重生的方式把它放入init系统。 在那里,它运行,完成,重新生成(在脚本本身中有一点睡眠的概率)。 永远。 这是有弹性的(意外杀死这个过程并不意味着它永远死去,等等)。
我看过很多关于暴发户的post,甚至在CentOS 6上有关它未来的一些争论,等等。 不过,我现在必须把这个popup到CentOS 5的盒子里 – 我们没有暴发户,也不会很快。 我必须把它放到这个生产箱子上,而且不会破坏任何东西。
我看过/ etc / inittab有点poo'd,但也有人指出,这是获得重生的最好方法 – 即/etc/init.d/whatever链接到/etc/rc3.d/whatever等典型的方式,不给予重生的能力。 我仍然不确定 – 似乎是这样。
考虑到这些限制,是否最好也是合理的,把我们的小脚本放到/ etc / inittab本身,并重新生成,然后去?
我会守护脚本/进程,并用Monit来pipe理它。
这会给你respawn和过程控制,但也允许你运行/检查过程比cron更短的时间间隔(例如15秒)