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”命令设置相对定时器。 永远将处理重新启动脚本,如果它崩溃。
-
开始你的脚本
forever start /path/yourscript.js
-
安排停止命令
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);