全面了解Linux PM2

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
应用实时监控服务-应用监控,每月50GB免费额度
简介: 全面了解Linux PM2

前言
在现代的互联网应用开发中,我们通常会面临一些常见的问题,比如如何管理进程、如何保证进程的高可用性等。为了解决这些问题,我们需要使用一些工具来帮助我们管理进程。其中,PM2 是一个非常好用的进程管理工具,它可以帮助我们轻松地管理进程、监控进程、自动重启进程等。本文将介绍 PM2 的基本用法和高级用法,帮助读者更好地使用 PM2。

什么是 PM2?
PM2 是一个进程管理工具,它可以帮助我们管理 Node.js 进程。PM2 可以监控应用程序并自动重启它们,也可以在集群模式下负载均衡进程。除此之外,PM2 还提供了很多有用的功能,比如日志管理、进程监控、应用程序部署等。

安装 PM2
在使用 PM2 之前,我们需要先安装它。PM2 可以通过 npm 安装,执行以下命令即可:

npm install pm2 -g
PM2 基本用法
启动应用程序
使用 PM2 启动应用程序非常简单,只需要在命令行中执行以下命令即可:

pm2 start app.js
其中,app.js 是我们要启动的应用程序的入口文件。执行该命令后,PM2 会启动该应用程序,并在后台运行。

查看应用程序列表
使用 PM2 启动的应用程序可以通过以下命令查看:

pm2 list
该命令会列出所有使用 PM2 启动的应用程序。

停止应用程序
如果我们需要停止某个应用程序,可以使用以下命令:

pm2 stop app
其中,app 是要停止的应用程序的名称或 ID。如果我们想要停止所有使用 PM2 启动的应用程序,可以使用以下命令:

pm2 stop all
重启应用程序
如果我们需要重启某个应用程序,可以使用以下命令:

pm2 restart app
其中,app 是要重启的应用程序的名称或 ID。如果我们想要重启所有使用 PM2 启动的应用程序,可以使用以下命令:

pm2 restart all
删除应用程序
如果我们需要删除某个应用程序,可以使用以下命令:

pm2 delete app
其中,app 是要删除的应用程序的名称或 ID。如果我们想要删除所有使用 PM2 启动的应用程序,可以使用以下命令:

pm2 delete all
查看应用程序日志
使用 PM2 启动的应用程序会自动记录日志,我们可以使用以下命令查看应用程序的日志:

pm2 logs app
其中,app 是要查看日志的应用程序的名称或 ID。该命令会输出应用程序的日志,可以通过 Ctrl+C 停止查看。

监控应用程序
PM2 还提供了一个监控功能,可以帮助我们监控应用程序的 CPU 和内存使用情况。使用以下命令可以启动监控:

pm2 monit
该命令会启动一个监控界面,可以通过该界面查看应用程序的 CPU 和内存使用情况。

PM2 高级用法
配置文件
在使用 PM2 启动应用程序时,我们可以使用配置文件来指定应用程序的参数。配置文件是一个 JSON 文件,可以包含以下参数:

name:应用程序的名称。
script:应用程序的入口文件。
args:传递给应用程序的参数。
watch:是否监视文件变化并自动重启应用程序。
ignore_watch:忽略监视的文件或目录。
watch_options:监视选项。
exec_mode:执行模式,可以是 fork 或 cluster。
instances:进程实例的数量。
max_memory_restart:当进程使用的内存超过指定的值时,自动重启进程。
env:环境变量。
env_production:生产环境的环境变量。
env_development:开发环境的环境变量。
下面是一个示例配置文件:

{
"name": "my-app",
"script": "app.js",
"args": ["--port", "3000"],
"watch": true,
"ignore_watch": ["node_modules"],
"watch_options": {
"followSymlinks": false
},
"exec_mode": "cluster",
"instances": 2,
"max_memory_restart": "200M",
"env": {
"NODE_ENV": "development"
},
"env_production": {
"NODE_ENV": "production"
}
}

使用以下命令可以启动应用程序:

pm2 start app.json
集群模式
PM2 可以在集群模式下运行,这可以帮助我们提高应用程序的性能和可用性。在集群模式下,PM2 会启动多个进程实例,并在这些实例之间进行负载均衡。使用以下命令可以启动应用程序并设置进程实例数量:

pm2 start app.js -i 2
其中,-i 参数指定进程实例数量。

守护进程模式
PM2 还可以在守护进程模式下运行,这可以帮助我们将应用程序作为服务运行。在守护进程模式下,PM2 会将应用程序作为系统服务运行,并在系统启动时自动启动应用程序。使用以下命令可以将应用程序设置为守护进程模式:

pm2 startup
该命令会生成一个启动脚本,并将其添加到系统服务中。使用以下命令可以将应用程序添加到系统服务中:

pm2 save
该命令会将当前 PM2 进程列表保存到系统服务中。

PM2 Plus
PM2 Plus 是一个付费的 PM2 服务,它可以帮助我们更好地管理 PM2 进程。PM2 Plus 提供了以下功能:

实时监控:可以实时监控 PM2 进程的状态,包括 CPU 使用率、内存使用率等。
消息通知:可以通过邮件、短信等方式接收 PM2 进程的异常信息。
集成部署:可以将代码部署到多个服务器上,并通过 PM2 Plus 进行集成部署。
线上调试:可以在线上对 PM2 进程进行调试。
其他功能:还有一些其他有用的功能,比如日志管理、进程监控等。
注意事项
在使用 PM2 时,需要注意以下事项:

PM2 只能管理 Node.js 进程,无法管理其他类型的进程。
PM2 可以在集群模式下运行,但需要确保应用程序的代码是无状态的,否则可能会出现数据不一致的问题。
在使用 PM2 启动应用程序时,需要确保应用程序的入口文件是正确的,否则可能会启动失败。
在使用 PM2 启动应用程序时,需要确保应用程序的端口号是正确的,否则可能会出现连接失败的问题。
在使用 PM2 启动应用程序时,需要确保应用程序的依赖已经安装,否则可能会出现启动失败的问题。
结论
PM2 是一个非常好用的进程管理工具,它可以帮助我们轻松地管理进程、监控进程、自动重启进程等。本文介绍了 PM2 的基本用法和高级用法,希望读者能够通过本文了解 PM2,并在实际开发中使用它来管理进程。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
JavaScript Linux
linux安装pm2全过程
你要在linux上安装pm2有很多方法,但我是用node的工具npm来完成安装的,所以在安装pm2之前需要先安装node
4327 1
|
Linux
linux常用命令-离线安装PM2
因为要部署应用的机器没有公网连接,所以直接npm install pm2是不可能了, 简单记录一下怎么离线安装pm2
963 0
|
Linux Shell
Linux 日常维护 脚本运算等 PM2管理说明
定时任务备份数据,看了Linux还可以运算这里记录下来,亲自测试过。
130 0
|
14天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
102 6
|
15天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
57 3
|
15天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
46 2
|
23天前
|
缓存 监控 Linux
|
10天前
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
40 3