我正在使用节点js在我的应用程序中运行聊天服务器。我已经永远安装在服务器上了。通常,我通过以下命令永远使用节点启动节点:
forever start server.js &
问题是javascript文件在一段时间后停止运行。它在终端中显示以下内容:
Write failed: Broken pipe
当我再次登录我的服务器并输入start命令时,节点会保持运行状态。即使我的本地会话被注销后,我应该使用什么命令来保持永久运行?
答案 0 :(得分:0)
假设您使用的是某些Linux系统,则可以使用screen
。这非常简单。
有很多教程,只是google for'screen linux'
答案 1 :(得分:0)
要将脚本作为后台任务无限运行,您需要流程管理器工具。 PM2是我最喜欢用nodejs制作的流程管理器工具,但由于它是CLI,因此可以运行任何终端任务。
基本上,您可以安装NodeJ和npm到达pm2。 (您可以访问NodeJs.org下载安装程序。)
您需要在终端上使用var myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse);
将pm2作为全局模块安装
您可以通过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>
);
};
然后,您可以使用npm install -g pm2
它将在后台创建一个线程来运行您的脚本,并将永远重启。
如果您执行的操作花费了很多时间,并且您不想看到终端上正在运行的任务,则可以通过在命令中添加参数pm2 -v
来禁用重新启动。 (#pm2 start file_name.js
)
如果要查看日志或任务状态,可以只使用 --no-autorestart
,pm2 start file_name.js --no-autorestart
和pm2 status
。
如果要停止任务,可以使用pm2 logs
您可以使用pm2 monit
或pm2 stop task_name
重新启动所有任务
您可以使用pm2 reload all
有关更多信息,您可以访问PM2 Documentation