node应用管理器pm2 的使用

简介:

PM2 是一个带有负载均衡功能的 Node 应用的进程管理器。

当你要把你的独立代码利用全部的服务器上的所有 CPU,并保证进程永远都活着,0 秒的重载, PM2 是完美的。它非常适合 IaaS 结构,但不要把它用于 PaaS 方案(随后将开发 Paas 的解决方案)。

github:

https://github.com/Unitech/pm2

常用操作:

# 安装 pm2
$ npm install -g pm2
# 启动pm2
$ pm2 start pm2.json
# pm2 list 查看列表:
$ pm2 list
┌──────────┬────┬─────────┬──────┬────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode    │ pid  │ status │ restart │ uptime │ memory      │ watching │
├──────────┼────┼─────────┼──────┼────────┼─────────┼────────┼─────────────┼──────────┤
│ pdi      │ 1  │ cluster │ 8626 │ online │ 0       │ 2h     │ 36.113 MB   │ disabled │
│ cicnoc   │ 2  │ cluster │ 8781 │ online │ 0       │ 2h     │ 33.078 MB   │ disabled │
│ bi       │ 3  │ cluster │ 8876 │ online │ 0       │ 119m   │ 35.137 MB   │ disabled │
└──────────┴────┴─────────┴──────┴────────┴─────────┴────────┴─────────────┴──────────┘
 Use `pm2 show ` to get more details about an app
# 删除一个应用:
$ pm2 delete pdi
# 停掉一个应用:
$ pm2 stop pdi
$ pm2 --help

  Usage: pm2 [cmd] app


  Commands:

    start [options]                   start and daemonize an app
    deploy                                             deploy your json
    startOrRestart                                                 start or restart JSON file
    startOrReload                                                  start or gracefully reload JSON file
    startOrGracefulReload                                          start or gracefully reload JSON file
    stop [options]                            stop a process (to start it again, do pm2 restart )
    restart [options]                         restart a process
    scale                                              scale up/down a process in cluster mode depending on total_number param
    reload                                                     reload processes (note that its for app using HTTP/HTTPS)
    gracefulReload                                             gracefully reload a process. Send a "shutdown" message to close all connections.
    id                                                             get process id by name
    delete                             stop and delete a process from pm2 process list
    sendSignal                                      send a system signal to the target process
    ping                                                                 ping pm2 daemon - if not up it will launch it
    updatePM2                                                            update in-memory PM2 with local PM2
    update                                                               (alias) update in-memory PM2 with local PM2
    install|module:install                                 install or update a module and run it forever
    module:update                                          update a module and run it forever
    module:generate [app_name]                                           Generate a sample module in current folder
    uninstall|module:uninstall                                   stop and uninstall a module
    publish|module:publish                                               Publish the module you are currently on
    set                                                      sets the specified config  
    multiset                                                      multiset eg "key1 val1 key2 val2
    get [key]                                                            get value for 
    conf [key] [value]                                                   get / set module config values
    config  [value]                                                 get / set module config values
    unset                                                           clears the specified config 
    interact [options] [secret_key|command] [public_key] [machine_name]  linking action to keymetrics.io - command can be stop|info|delete|restart
    link [options] [secret_key|command] [public_key] [machine_name]      linking action to keymetrics.io - command can be stop|info|delete|restart
    web                                                                  launch a health API on port 9615
    dump                                                                 dump all processes for resurrecting them later
    save                                                                 (alias) dump all processes for resurrecting them later
    resurrect                                                            resurrect previously dumped processes
    startup [platform]                                                   auto resurrect process at startup. [platform] = ubuntu, centos, redhat, gentoo, systemd, darwin, amazon
    logrotate                                                            copy default logrotate configuration
    generate                                                             generate an ecosystem.json configuration file
    ecosystem                                                            generate an ecosystem.json configuration file
    reset                                                   reset counters for process
    describe                                                         describe all parameters of a process id
    desc                                                             (alias) describe all parameters of a process id
    info                                                             (alias) describe all parameters of a process id
    show                                                             (alias) describe all parameters of a process id
    list                                                                 list all processes
    ls                                                                   (alias) list all processes
    l                                                                    (alias) list all processes
    status                                                               (alias) list all processes
    jlist                                                                list all processes in JSON format
    prettylist                                                           print json in a prettified JSON
    monit                                                                launch termcaps monitoring
    m                                                                    (alias) launch termcaps monitoring
    flush                                                                flush logs
    reloadLogs                                                           reload all logs
    logs [options] [id|name]                                             stream logs file. Default stream all logs
    kill                                                                 kill daemon
    pull  [commit_id]                                              updates repository for a given app
    forward                                                        updates repository to the next commit for a given app
    backward                                                       downgrades repository to the previous commit for a given app
    gc                                                                   force PM2 to trigger garbage collection
    deepUpdate                                                           performs a deep update of PM2
    *

  Options:

    -h, --help                           output usage information
    -V, --version                        output the version number
    -v --version                         get version
    -s --silent                          hide all messages
    -m --mini-list                       display a compacted list without formatting
    -f --force                           force actions
    -n --name                      set a  for script
    -i --instances               launch [number] instances (for networked app)(load balanced)
    -l --log [path]                      specify entire log file (error and out are both included)
    -o --output                    specify out log file
    -e --error                     specify error log file
    -p --pid                        specify pid file
    -k --kill-timeout             delay before sending final SIGKILL signal to process
    --max-memory-restart         specify max memory amount used to autorestart (in megaoctets)
    --restart-delay               specify a delay between restarts (in milliseconds)
    --env              specify environment to get specific env variables (for JSON declaration)
    -x --execute-command                 execute a program using fork system
    -u --user                  define user when generating startup script
    --hp                      define home path when generating startup script
    -c --cron              restart a running process based on a cron pattern
    -w --write                           write configuration in local folder
    --interpreter           the interpreter pm2 should use for executing app (bash, python...)
    --interpreter-args        interpret options (alias of --node-args)
    --log-date-format   add custom prefix timestamp to logs
    --no-daemon                          run pm2 daemon in the foreground if it doesn't exist already
    --skip-env                           do not refresh environmnent on restart/reload
    --source-map-support                 force source map support
    --only             with json declaration, allow to only act on one application
    --disable-source-map-support         force source map support
    --merge-logs                         merge logs from different instances but keep error and out separated
    --watch [paths]                      watch application folder for changes
    --ignore-watch        folder/files to be ignored watching, chould be a specific name or regex - e.g. --ignore-watch="test node_modules "some scripts""
    --node-args               space delimited arguments to pass to node in cluster mode - e.g. --node-args="--debug=7001 --trace-deprecation"
    --no-color                           skip colors
    --no-vizion                          start an app without vizion feature (versioning control)
    --no-autorestart                     start an app without automatic restart
    --no-treekill                        Only kill the main process, not detached children
    --no-pmx                             start an app without pmx
    --no-automation                      start an app without pmx

  Basic Examples:

    Start an app using all CPUs available + set a name :
    $ pm2 start app.js -i 0 --name "api"

    Restart the previous app launched, by name :
    $ pm2 restart api

    Stop the app :
    $ pm2 stop api

    Restart the app that is stopped :
    $ pm2 restart api

    Remove the app from the process list :
    $ pm2 delete api

    Kill daemon pm2 :
    $ pm2 kill

    Update pm2 :
    $ npm install pm2@latest -g ; pm2 update

    More examples in https://github.com/Unitech/pm2#usagefeatures

  Deployment help:

    $ pm2 deploy help

扩展阅读:

PM2 使用介绍
https://segmentfault.com/a/1190000002539204

你可能感兴趣的:(node应用管理器pm2 的使用)