NodeJs:维护脚本运行一段时间?

我已经很快写了一个Node.Js脚本,没有任何error handling,并且在遇到错误时偶尔崩溃。 粗心但高效。

为了保持它的运行,我可以永远使用npm,让它永远重启。 花式。

现在让我们说,我希望它运行了12个小时(有一些模块/代码在崩溃后重新启动),然后完全停止。

任何简单的方法来实现这样的行为?

如果你想让你的node.js进程在12个小时后自行停止,你可以设置一个从现在开始的12个小时的定时器并且调用process.exit()

 setTimeout(function() { process.exit(0); }, 1000 * 60 * 60 * 12); 

如果你想使用一个像永远一样的系统,但是你们都想在12个小时内停止这个程序,并且不想永远重新启动它,那么你可以运行一个计时工作 ,从现在开始计划12个小时执行一次forever stop /somepath/yourscript.js


PS没有办法自己偶然崩溃的系统是“不小心,但是高效”。 它可能会很快走,但它也是松散和危险的,从来没有长期的代码有效的方式。 我build议你开始删除你的代码中所有的技术债务 。

我多年来从事开发团队的工作中最喜欢的一句话是:“为什么没有足够的时间来做正确的事情,但总是有足够的时间去做正确的事情”。

如果您使用的是UNIXy操作系统,则可以使用at命令在给定的时间永远终止。

例:

 $ echo 'forever stop whatever.js' | at now + 12 hours 

您可以使用Linux的“at”命令设置相对定时器。 永远将处理重新启动脚本,如果它崩溃。

  1. 开始你的脚本

    forever start /path/yourscript.js

  2. 安排停止命令

    echo 'forever stop /path/yourscript.js' | at now + 12 hours

注意你可能需要安装“at” – 例如。 ( apt-get install at

注意你也可以安排“at”执行一个shell脚本:

  • 创build一个包含这一行的文件“stopscript.sh”: forever stop /path/yourscript.js
  • 设置一个“at”作业: at now +12 hours -f ~/stopscript.sh

使用cluster模块时,主服务器出现错误时重启集群。

在master中,只需运行这样的代码:

 setTimeout(function() { process.exit(0); }, 12 * 3600 * 1000);