原文详见: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 不允许的 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2021-04-22 根据指定手绘图纸照片行政区划自定义绘制对应区域边界生成geoJOSN的解决方案
2019-04-22 c# 扩展