怎样在关闭命令行界面的情况下不关闭Nodejs服务?

怎样在关闭命令行界面的情况下不关闭Nodejs服务?

我启动node服务是在命令行中的,当我当我关掉命令行时,服务也随着关掉了,问题是,怎么让我关掉命令行界面时,不关闭服务。比如我在云服务器上部署了一个项目,我总不能一直开着命令行吧?

7 回复

当然可以!以下是关于如何在关闭命令行界面的情况下不关闭Node.js服务的详细解答。

如何在关闭命令行界面的情况下不关闭Node.js服务?

当你在命令行中启动一个Node.js服务时,如果关闭命令行窗口,Node.js进程也会随之被终止。为了避免这种情况,你可以使用一些工具来将你的Node.js应用后台运行。以下是一些常见的方法:

方法一:使用 nohup 命令

nohup 是一个 Unix/Linux 命令,可以让程序在用户退出系统后继续运行。你可以用它来运行 Node.js 应用。

nohup node your-app.js &

这会启动你的 Node.js 应用,并且即使你关闭命令行窗口,应用也会继续运行。输出会被重定向到 nohup.out 文件中。

示例代码

假设你的应用文件名为 app.js,你可以这样运行:

nohup node app.js &

方法二:使用 pm2 管理器

pm2 是一个非常强大的 Node.js 进程管理器,支持负载均衡、日志管理和自动重启等功能。

首先,你需要全局安装 pm2

npm install -g pm2

然后,使用 pm2 启动你的应用:

pm2 start app.js

如果你想让应用在服务器重启后依然运行,可以使用以下命令:

pm2 startup

然后按照提示执行生成的命令以设置开机自启。

示例代码

启动应用:

pm2 start app.js

查看所有运行的应用:

pm2 list

停止应用:

pm2 stop app.js

删除应用:

pm2 delete app.js

总结

通过使用 nohuppm2,你可以确保在关闭命令行窗口后,Node.js 应用仍然在后台运行。对于生产环境,推荐使用 pm2 因为其提供了更多高级功能和更好的管理体验。

希望这些信息对你有所帮助!


pm2 forever

linux后台进程:node start.js & 不过如果要关闭服务,需要ps查看进程,再kil

screen

screen+1

昨晚临睡前装了一个forever,似乎已经满足我的需求,随后再看看pm2跟screen,感谢各位!

要在关闭命令行界面的情况下保持 Node.js 服务运行,可以使用 nohup 命令或 pm2 这样的进程管理工具。

使用 nohup

nohup 是一个 Unix 命令,它可以让进程忽略挂起(SIGHUP)信号,并将输出重定向到 nohup.out 文件中。

示例:

nohup node yourapp.js &

执行上述命令后,你可以关闭终端,yourapp.js 会继续在后台运行。

使用 pm2

pm2 是一个流行的进程管理工具,它可以让你的应用程序在后台运行,并且提供日志管理、自动重启等功能。

安装 pm2

npm install -g pm2

启动应用

pm2 start yourapp.js

设置为开机自启

pm2 startup
pm2 save

查看应用状态

pm2 list

示例代码

假设你的 yourapp.js 文件如下:

const http = require('http');

const hostname = '127.0.0.1';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at http://${hostname}:${port}/`);
});

启动方式

# 使用 nohup
nohup node yourapp.js &

# 或者使用 pm2
pm2 start yourapp.js

这两种方法都可以确保你的 Node.js 应用在关闭命令行界面后仍然运行。推荐使用 pm2,因为它提供了更多的管理和监控功能。

回到顶部