PM2 Usage, Parameter Explanation and Examples

pm2用法以及参数解释及其用法示例

PM2(Process Manager 2)是一个进程管理工具,它广泛应用于Node.js的生产环境中。PM2可以帮助你在后台启动、监控和维护应用程序,并且能够实现负载均衡以及自动重启应用。

常用的PM2命令和参数:

  • pm2 start: 启动应用程序

    • --name: 给进程指定名称
    • -i <number/max>: 启动指定数量的实例,如果值为max则根据CPU核数来启动
    • --watch: 监听文件变化自动重启应用
    • -l --log <path>: 指定日志文件的路径
    • --merge-logs: 多实例合并日志
    • --time: 在日志中添加时间戳
  • pm2 list: 列出所有由PM2管理的进程

  • pm2 stop <app_name/app_id>: 停止指定的应用程序

  • pm2 restart <app_name/app_id>: 重启指定的应用程序

  • pm2 delete <app_name/app_id>: 删除指定的进程

  • pm2 show <app_name/app_id>: 显示应用程序的详细信息

  • pm2 monit: 监控每个节点的CPU和内存使用情况

  • pm2 logs <app_name/app_id>: 查看应用程序的输出日志

  • pm2 reload <app_name/app_id>: 热重载(0秒停机时间)指定的应用程序

  • pm2 scale <app_name> <number>: 扩展/缩减应用程序的实例数量

  • pm2 update: 更新PM2内部的所有进程和配置

  • pm2 save: 保存当前的进程列表,PM2重启时会用这个列表恢复进程

  • pm2 resurrect: 恢复之前通过pm2 save保存的进程列表

用法示例:

  1. 启动一个简单的Node.js应用程序:

    pm2 start app.js
    
  2. 启动应用并指定应用名称:

    pm2 start app.js --name my-app
    
  3. 启动4个应用实例以充分利用四核CPU:

    pm2 start app.js -i 4
    
  4. 实时监控文件变化并自动重启应用:

    pm2 start app.js --watch
    
  5. 启动时合并日志并添加时间戳:

    pm2 start app.js --merge-logs --time
    
  6. 列出全部PM2管理的应用:

    pm2 list
    
  7. 停止某个应用:

    pm2 stop my-app
    
  8. 重启某个应用:

    pm2 restart my-app
    
  9. 删除某个应用:

    pm2 delete my-app
    
  10. 查看实时监控面板:

    pm2 monit
    

请注意,上述命令只提供了基础和常见的用法,PM2还有很多其他高级特性和选项可供使用。更多详细信息可以通过pm2 --help来获取,或者访问PM2的官方文档。

pm2 start的所有相关参数都列出来解释

pm2 start 命令用于启动应用程序,并且接受多个参数来控制应用的行为。以下是部分 pm2 start 可用的参数列表及其解释:

  • -n, --name <name>: 设置进程名称。
  • -i, --instances <number>: 启动多少个实例,可以是具体数字或者max来表示根据CPU核心数确定实例数。
  • --silent: 静默模式,PM2日志中不显示启动的详细信息。
  • --watch [paths]: 监视文件变化,可指定监视特定路径(默认为当前目录)。
  • -f, --force: 强制启动一个新的应用实例,即使同名的应用已经存在。
  • --node-args "<node_args>": 传递给node的参数,如 --node-args="--harmony --max_old_space_size=1024"
  • -x, --execute-command: 强制执行解释器脚本,无论脚本后缀如何。
  • --max-memory-restart <memory>: 当内存超过此值时重启应用,例如:--max-memory-restart 100M
  • --restart-delay <delay>: 在应用重启之间等待指定毫秒数。
  • --env <environment_name>: 指定环境变量配置文件,如 --env production
  • --log-date-format <format>: 指定日志日期格式,如ISO8601。
  • -l, --log <path>: 指定日志文件路径。
  • -o, --output <path>: 指定标准输出日志文件路径。
  • -e, --error <path>: 指定错误输出日志文件路径。
  • --pid <path>: 指定pid文件路径。
  • -a, --update-env: 更新环境变量,通常用在重新载入进程时。
  • -u, --user <username>: 定义启动进程的用户(需要相应权限)。
  • -g, --group <groupname>: 定义启动进程的用户组(需要相应权限)。
  • -c, --cron <cron_pattern>: 定义重启任务的Cron模式。
  • --interpreter <interpreter>: 指定应用的解释器,比如 /usr/bin/python
  • --interpreter-args "<arguments>": 传递给解释器的参数,用空格隔开。

使用示例:

# 以最大化实例启动app.js并命名为“my-api”
pm2 start app.js --name "my-api" -i max

# 使用特定Node参数启动
pm2 start app.js --node-args="--max-old-space-size=2048"

# 监听文件变化并重启应用
pm2 start script.sh --watch

# 限制最大内存并自动重启
pm2 start big-array.js --max-memory-restart 20M

# 设置特定的日志文件和日期格式
pm2 start server.js --log-date-format "DD-MM HH:mm:ss.SSS" --log "/var/log/pm2/my-app.log"

# 自定义解释器和解释器参数
pm2 start my-bash-script.sh --interpreter bash --interpreter-args "-x"

请注意,pm2 start 的参数非常多,上面列出的只是其中一部分。具体使用时可以根据你的需求选择合适的参数,更多详情可以通过查看官方文档或通过 pm2 start --help 来获取帮助。