如何在不停止的情况下永远运行节点js?

时间:2015-03-02 13:15:49

标签: javascript node.js

我正在使用节点js在我的应用程序中运行聊天服务器。我已经永远安装在服务器上了。通常,我通过以下命令永远使用节点启动节点:

forever start server.js &

问题是javascript文件在一段时间后停止运行。它在终端中显示以下内容:

Write failed: Broken pipe

当我再次登录我的服务器并输入start命令时,节点会保持运行状态。即使我的本地会话被注销后,我应该使用什么命令来保持永久运行?

2 个答案:

答案 0 :(得分:0)

假设您使用的是某些Linux系统,则可以使用screen。这非常简单。

有很多教程,只是google for'screen linux'

答案 1 :(得分:0)

要将脚本作为后台任务无限运行,您需要流程管理器工具。 PM2是我最喜欢用nodejs制作的流程管理器工具,但由于它是CLI,因此可以运行任何终端任务。

  1. 基本上,您可以安装NodeJ和npm到达pm2。 (您可以访问NodeJs.org下载安装程序。)

  2. 您需要在终端上使用var myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); 将pm2作为全局模块安装

  3. 您可以通过const App = () => { interface IForm { username: string; password: string; email: string; } const [form, setFormValue] = useState<IForm>({ username: "", password: "", email: "" }); const updateForm = ( formKey: keyof IForm, event: React.ChangeEvent<HTMLInputElement> ) => { const { value } = event.target; setFormValue({ ...form, [formKey]: value }); }; const handelSubmit = () => { console.log("Form Submitted! Values: ", form); }; return ( <div> <form onSubmit={handelSubmit}> <div> <input type="text" placeholder="username" value={form.username} onChange={e => updateForm("username", e)} /> </div> <div> <input type="password" placeholder="password" value={form.password} onChange={e => updateForm("password", e)} /> </div> <div> <input type="email" placeholder="email" value={form.email} onChange={e => updateForm("email", e)} /> </div> <input className="submit" type="submit" value="submit" /> </form> </div> ); };

    检查它是否已安装
  4. 然后,您可以使用npm install -g pm2

    在终端上启动Node.js脚本
  5. 它将在后台创建一个线程来运行您的脚本,并将永远重启。

  6. 如果您执行的操作花费了很多时间,并且您不想看到终端上正在运行的任务,则可以通过在命令中添加参数pm2 -v来禁用重新启动。 (#pm2 start file_name.js

  7. 如果要查看日志或任务状态,可以只使用 --no-autorestartpm2 start file_name.js --no-autorestartpm2 status

  8. 如果要停止任务,可以使用pm2 logs

  9. 您可以使用pm2 monitpm2 stop task_name重新启动所有任务

  10. 您可以使用pm2 reload all

    终止任务

有关更多信息,您可以访问PM2 Documentation