PM2进程管理

PM2 process manager for Node.js
2018/12/4 PM2 => 3.2.2

Installation

npm install pm2 -g

基础命令

pm2 start <js|json>  // 启动并添加一个进程
pm2 ls  // 显示所有进程
pm2 delete <name|id|script|all|json|stdin>  // 停止并删除指定的进程
// 此进程使用kill 无效,因为存在守护进程,所以手动kill掉某个进程后会自动重启
pm2 stop <id|name|all|json|stdin>  // 停止进程
pm2 start <id|name|all|json|stdin>  // 启动指定进程
pm2 restart <id|name|all|json|stdin>  // 重启指定进程 也可使用正则匹配多个进程

日志

// 1 实时查看某进程日志
pm2 logs <id|name|all>
// 2 当没有指定日志目录时,默认在~/.pm2/logs中存放这所有进程日志历史

pm2 flush 清空所有历史应用日志

负载均衡

pm2 start app.js -i <number | max> // 启动指定数量的子进程

配置文件

  1. 使用Generator
pm2 init  // 生成 ecosystem.config.js
// 此时 pm2 start  ||  pm2 start ecosystem.config.js 即可使用配置启动
// ecosystem.config.js
// 配置多个环境
module.exports = {
  apps : [{
    name: "app",
    script: "./app.js",
    // log start
    output: "./out.log",
    error: "./error.log",
    log: "./combined.outerr.log",
    log_type: "json", // 将日志按json打出
    log_date_format: "YYYY-MM-DD",
    merge_logs: true,
    // log end
    // output:  is only standard output (console.log)
    // error: is only error output (console.error)
    // log combines output and error, disabled by default

    // balancing start
    instances: "max",
    // balancing end

    // watch and reload
    watch: true,
    env: {
      NODE_ENV: "development",
    },
    env_production: {
      NODE_ENV: "production",
    }
  }]
}
// 通过--env 指定环境 
// 当进程被启动后 其环境则一般不可变,可通过--update-env 强制改变环境
  1. 自己设置配置文件 app.json
[{
    "name": "app",
    "script": "./app.js",
    "error_file": "/data/app-logs/argus/err.log",
    "out_file": "/data/app-logs/argus/out.log",
    "exec_mode": "cluster_mode",  // 单点/集群
    "listen_timeout" : 10000,
    "log_date_format" :"YYYY-MM-DD HH:mm:ss.SSS",
    "env": {
        "NODE_ENV": "production"
    }
}]

保存进程列表

// ~/.pm2/dump.pm2  ||  ~/.pm2/dump.pm2.bak
pm2 dump | save  // 保存当前的进程列表
pm2 resurrect   // 恢复之前保存的进程列表

  1. 进程列表用json格式输出
 pm2 prettylist     // print json in a prettified JSON
  1. 配置文件具体参数

https://pm2.io/doc/en/runtime/reference/ecosystem-file/

  1. 配置文件中的部署deploy 使用ssh

https://pm2.io/doc/en/runtime/guide/easy-deploy-with-ssh/

  1. PM2 源码

https://github.com/Unitech/pm2

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 知乎地址:https://zhuanlan.zhihu.com/p/58787876 对于后台进程的管理,常用的工...
    波罗学的草稿阅读 25,576评论 4 26
  • pm2 是一个带有负载均衡功能的Node应用的进程管理器。 一、概述 PM2是一个带有负载均衡功能的Node.js...
    小纠结在简书阅读 6,120评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,798评论 19 139
  • # Python 资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列...
    小迈克阅读 8,164评论 1 3
  • “爱你这件事,让我好狼狈,所以你可以滚了。” 最近我的朋友小z跑来和我哭诉。 当时我就暴躁了!⋯⋯看着她哭成了这德...
    迷果儿阅读 1,482评论 0 1