博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

pm2的使用

Posted on   火冰·瓶  阅读(196)  评论(0编辑  收藏  举报

原文详见:https://www.jiyik.com/w/pm2/pm2-configuration-file

 一、安装及常用命令

1.更新源

sudo apt-get update


2.安装 NodeJS

sudo apt install nodejs


3.安装npm

sudo apt install npm


4.安裝 PM2

npm install pm2 -g


5.设置pm2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//生成开机启动 pm2 服务的配置文件
pm2 startup
 
//保存服务
pm2 save
 
//启动进程/应用
pm2 start bin/www
pm2 start app.js
pm2 start test.sh
pm2 start "dotnet TestUbuntu.dll --urls http://*:8090" --name test //设置启动net core网址、设置端口号为8090,并设置pm2进程名称为test
 
//启动进程/应用并命名进程
pm2 start app.js --name wb123
 
//结束进程/应用
pm2 stop www
 
//结束所有进程/应用
pm2 stop all
 
//删除进程/应用
pm2 delete www
 
//删除所有进程/应用
pm2 delete all
 
//列出所有进程/应用
pm2 list
 
//查看某个进程/应用具体情况
pm2 describe www
 
//查看进程/应用的资源消耗情况
pm2 monit
 
//查看pm2的日志
pm2 logs
 
//若要查看某个进程/应用的日志,使用
pm2 logs www
 
//重新启动进程/应用
pm2 restart www
pm2 restart [进程名] | [进程id] // 重启效果 短时间内进程无效
pm2 reload [进程名] | [进程id] // 重载效果 会保持进程在线
 
//内存达到30M时,重启进程
pm2 start test.sh --max-memory-restart 300M
 
//重新启动所有进程/应用
pm2 restart all
 
//查看某一个进程的详细信息
pm2 show [进程名] | [进程id]
 
 
//手动删除日志
pm2 flush
 
 
//自动删除pm2日志
pm2 install pm2-logrotate   // 注意是pm2 install而不是npm install
  
pm2 set pm2-logrotate-ext:retain 7   //保存7个文件
pm2 set pm2-logrotate-ext:max_size 100M    //每个备份文件大小为100M

  

二、生成配置

//在当前路径生成示例配置文件

pm2 init simple

这将生成一个默认的配置文件 ecosystem.config.js

module.exports = {
  apps : [{
  name : "app1",
  script : "./app.js"
  }]
}

 

三、使用配置文件

与操作应用程序相比,我们可以无缝启动/停止/重启/删除配置文件中包含的所有应用程序:

启动所有的应用程序

pm2 start ecosystem.config.js

停止所有应用程序

pm2 stop ecosystem.config.js

重启所有应用程序

 pm2 restart ecosystem.config.js

重载所有应用程序

pm2 reload ecosystem.config.js

删除所有应用程序

pm2 delete ecosystem.config.js

 

四、配置文件可用属性 

通用属性

字段类型示例描述
name (string) “my-api” 应用程序名称 (默认为脚本名称)
script (string) ”./api/app.js” 相对于 pm2 start 的脚本路径
cwd (string) “/var/www/” 将启动您的应用程序的目录
args (string) “-a 13 -b 12” 包含通过 CLI 传递给脚本的所有参数的字符串
interpreter (string) “/usr/bin/python” 解释器绝对路径(默认为 node )
interpreter_args (string) ”–harmony” 传递给解释器的选项
node_args (string)   interpreter_args的别名

高级特性

字段类型示例描述
instances number 4 可多进程同时运行实现负载均衡,值为CPU进程数或max
exec_mode string “cluster” 启动应用程序的模式,可以是“cluster”或“fork”,默认fork
watch boolean or [] true 启用监视和重启功能,如果文件夹或子文件夹中的文件发生更改,您的应用程序将重新加载
ignore_watch list [”[/\]./”, “node_modules”] 通过监视功能忽略某些文件或文件夹名称的正则表达式列表
max_memory_restart string “150M” 如果超过指定的内存量,您的应用程序将重新启动。 人性化的格式:可以是“10M”、“100K”、“2G”等等……
env object {“NODE_ENV”: “development”, “ID”: “42”} env variables which will appear in your app
env_ object {“NODE_ENV”: “production”, “ID”: “89”} 在执行 pm2 restart app.yml --env 时注入
source_map_support boolean true 默认为 true,[启用/禁用源映射文件]
instance_var string “NODE_APP_INSTANCE” 查看文档
filter_env array of string [ “REACT_” ] 排除以“REACT_”开头的全局变量,并且不允许它们渗透到集群中。

日志文件

字段类型示例描述
error_file (string)   指定错误日志文件 (默认 $HOME/.pm2/logs/XXXerr.log)
out_file (string)   指定标准输出日志文件 (默认 $HOME/.pm2/logs/XXXout.log)
pid_file (string)   指定pid进程文件 (默认 $HOME/.pm2/pid/app-pm_id.pid)
merge_logs boolean true 如果设置为 true,则避免使用进程 id 后缀日志文件
log_date_format (string) “YYYY-MM-DD HH:mm Z” 日志时间日期格式

控制流

字段类型示例描述
min_uptime (string)   被视为启动的应用程序的最小正常运行时间
listen_timeout number 8000 如果应用程序未在侦听,则强制重新加载之前的时间(以毫秒为单位)
kill_timeout number 1600 发送最终 SIGKILL 之前的时间(以毫秒为单位)
shutdown_with_message boolean false 使用 process.send(‘shutdown’) 而不是 process.kill(pid, SIGINT) 关闭应用程序
wait_ready boolean false 等待 process.send(‘ready’) 而不是重新加载等待监听事件
max_restarts number 10 在您的应用程序被视为错误并停止重新启动之前,连续不稳定重新启动的次数(小于 1 秒间隔或通过 min_uptime 自定义时间)
restart_delay number 4000 在重新启动崩溃的应用程序之前等待的时间(以毫秒为单位)。 默认为 0。
autorestart boolean false 默认为 true 。 如果为 false,如果应用程序崩溃或和平结束,PM2 将不会重新启动您的应用程序
cron_restart string “1 0 * * *” 使用 cron 模式定时任务来重新启动你的应用程序。 应用程序必须正在运行才能使 cron 功能正常工作
vizion boolean false 默认为真。 如果为 false,PM2 将在没有 vizion 功能的情况下启动(版本控制元数据)
post_update list [“npm install”, “echo launching the app”] 从 Keymetrics 控制面板执行 Pull/Upgrade 操作后将执行的命令列表
force boolean true 默认为 false。 如果为 true,可以多次启动同一个脚本,这通常是 PM2 不允许的

 

相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2021-04-22 根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
2019-04-22 c# 扩展
点击右上角即可分享
微信分享提示