node.js学习笔记(22) pm2

在前面的笔记中,我们启动express项目都是使用命令“npm start”,如果是后台进程,需要借助nohup。

nohup npm start &

然后,怎么查看是否启动成功?

只能借助jobs或ps:

lee@mypc ~/works/nodejs/study21/log-morgan $ jobs
[1]+  Running                 nohup npm start &

lee@mypc ~/works/nodejs/study21/log-morgan $ ps -aux | grep 'npm'
lee       4062  0.0  0.0  13424  2436 pts/5    S+   10:15   0:00 grep --colour=auto npm
lee      30413  0.0  0.6 1069532 48752 pts/5   Sl   Jan18   0:00 npm 

怎么关闭进程?

只能借助kill:

lee@mypc ~/works/nodejs/study21/log-morgan $ kill 30413
lee@mypc ~/works/nodejs/study21/log-morgan $ ps -aux | grep 'npm'
lee       4180  0.0  0.0  13424  2444 pts/5    S+   10:18   0:00 grep --colour=auto npm

太麻烦了吧,有没有?!

其实,还可以这样启动:

pm2 start app.js

这样查看:

pm2 list
┌──────────┬────┬──────┬───────┬─────────┬─────────┬────────┬─────────────┬──────────┐
│ App name │ id │ mode │ pid   │ status  │ restart │ uptime │ memory      │ watching │
├──────────┼────┼──────┼───────┼─────────┼─────────┼────────┼─────────────┼──────────┤
│ demo1    │ 0  │ fork │ 0     │ errored │ 28      │ 0      │ 0 B         │ disabled │
│ app      │ 1  │ fork │ 0     │ stopped │ 0       │ 0      │ 0 B         │ disabled │
│ app      │ 2  │ fork │ 23174 │ online  │ 0       │ 18h    │ 36.695 MB   │ disabled │
│ app      │ 3  │ fork │ 0     │ stopped │ 0       │ 0      │ 0 B         │ disabled │
└──────────┴────┴──────┴───────┴─────────┴─────────┴────────┴─────────────┴──────────┘
 Use `pm2 show <id|name>` to get more details about an app

这样关闭:

pm2 stop 2

这样重启:

pm2 restart 2

简单,方便,使用,有没有?!

pm2是一个带有负载均衡功能的nodejs应用的进程管理产品,功能强大。它可以让应用保持后台运行,重启0等待。

pm2的安装和应用非常简单。

主要命令使用demo如下:

$ npm install pm2 -g            # Install PM2
$ pm2 start app.js              # Start, Daemonize and auto restart application
$ pm2 start app.js -i 4         # Start 4 instances of application in cluster mode
                                # it will load balance network queries to each app
$ pm2 start app.js --name="api" # Start application and name it "api"
$ pm2 start app.js --watch      # Restart application on file change
$ pm2 start script.sh           # Start bash script

$ pm2 list                      # List all processes started with PM2
$ pm2 monit                     # Display memory and cpu usage of each app
$ pm2 show [app-name]           # Show all informations about application

$ pm2 logs                      # Display logs of all apps
$ pm2 logs [app-name]           # Display logs for a specific app
$ pm2 flush

$ pm2 stop all                  # Stop all apps
$ pm2 stop 0                    # Stop process with id 0
$ pm2 restart all               # Restart all apps
$ pm2 reload all                # Reload all apps in cluster mode
$ pm2 gracefulReload all        # Graceful reload all apps in cluster mode
$ pm2 delete all                # Kill and delete all apps
$ pm2 delete 0                  # Delete app with id 0
$ pm2 scale api 10              # Scale app with name api to 10 instances
$ pm2 reset [app-name]          # Reset number of restart for [app-name]

$ pm2 startup                   # Generate a startup script to respawn PM2 on boot
$ pm2 save                      # Save current process list
$ pm2 resurrect                 # Restore previously save processes
$ pm2 update                    # Save processes, kill PM2 and restore processes
$ pm2 generate                  # Generate a sample json configuration file

$ pm2 deploy app.json prod setup    # Setup "prod" remote server
$ pm2 deploy app.json prod          # Update "prod" remote server
$ pm2 deploy app.json prod revert 2 # Revert "prod" remove server by 2

$ pm2 module:generate [name]    # Generate sample module with name [name]
$ pm2 install pm2-logrotate     # Install module (here a log rotation system)
$ pm2 uninstall pm2-logrotate   # Uninstall module
$ pm2 publish                   # Increment version, git push and npm publish
时间: 2024-11-10 08:17:10

node.js学习笔记(22) pm2的相关文章

Node.js 学习笔记之简介、安装及配置

 本文是Node.js学习笔记系列文章的第一篇,主要给大家讲解的是在Windows和Linux上安装Node.js的方法.软件安装版本以0.12.0为例.希望大家能够喜欢.     简单的说 Node.js 就是运行在服务端的 JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好. 谁适合阅

node.js学习笔记(9) 和谐模式

众所周知,ECMAScript 是一种开放的.国际上广为接受的脚本语言规范. 它本身并不是一种脚本语言.正如在 Web 应用程序中执行有用操作的 bean 集合(例如,Netscape 的 AWT)是 Sun 的 JavaBean 规范的一种实现一样,JavaScript 是 ECMAScript 规范的一种实现. 2015年6月17日,ECMA国际发布了EcmaScript2015,即EcmaScript6(以下简称ES6)草案的正式版.ES6是继ES5之后的一次主要改进,语言规范由ES5.1

node.js学习笔记(16) child_process(三)

学习过前两篇笔记的源码分析,再来应用child_process的7个方法就不难理解了. By default, pipes for stdin, stdout and stderr are established between the parent Node.js process and the spawned child. 默认情况下,Node.js主进程和子进程间就会建立三个管道:stdin.stdout和stderr,即标准输入流.标准输出流和标准错误流. 如今热播的<芈月传>中有一段

node.js学习笔记(0) 前记

学习笔记原本是从1开始的,然而为了永远"怀念"已经离职的钱童鞋,我决定补上一篇.话说,程序员的数数不都是从0开始的吗. 初识node.js大概是一年前的这个时候,钱童鞋来单位面试,简历上的其中一项技能是node.js.当时我还傻傻的以为又是一个类似jquery的js框架-- 过完年,钱童鞋入职,然后慢慢得熟悉,交流得越来越多,也就慢慢得知node.js的众多优点. google的V8引擎 高速IO 非阻塞 异步回调 单线程 事件驱动 ... 然并卵,吸引我的却是javascript.在

node.js学习笔记(26) node-orm进阶一

上一个笔记中,我们已经认识了node-orm,它可以支持mongodb.mysql.postgres.  redshift. _shared和sqlite. 之所以能支持这么多中数据库,是因为node-orm的lib中有对各种数据库支持的backend脚本,可以看一下orm/lib/Drivers/DML目录下的文件有mongodb.js.mysql.js.postgres.js.redshift.js._shared.js.sqlite.js.这其中的每一个脚本其实都是对各种数据库驱动的封装,

node.js学习笔记(24) 箭头函数

11月下旬,我安装了Node.js-v5.1.0开始学习和使用Node.js. 然而Node.js开发团队在12月发布了v5.1.1,v5.2.0,v5.3.0,16年1月又发布了v5.4.0,v5.4.1,v5.5.0.这速度,是要坐火箭才能赶上呀-- 言归正传,第一次看到"=>"这个符号是在v5.4.0的api文档中.文档中频繁出现这样的代码示例: ()=>{ ... } 通过查Node.js的更新说明得知,这就是箭头函数,是ES6的新特性,Node.js从v5.4.0

Node.js学习笔记(一)概述

什么是Node.JS? 引用豆瓣Node.JS小组的回答: 把事件驱动IO库绑定给V8 JavaScript虚拟机实现的通用编程环境. 2月10日发布的0.4.0版成为新的稳定分支, 已更新至0.4.12 非稳定分支开始加入原生 Windows 支持, 已更新至0.5.6 官方网站, 包括API文档, 邮件列表等:http://nodejs.org 项目地址: https://github.com/joyent/node 它有什么不同? * 网络通信与文件系统IO无阻塞, 避免CPU时间浪费.

node.js学习笔记(13) global objects

Global objects可简单地译为全局对象,但它又不全是全局对象.Global objects 其实包括真正的全局对象和模块级的全局对象. 来看看它们分别有哪些吧. 真正的全局对象 Class: Buffer setInterval(cb, ms) setTimeout(cb, ms) clearInterval(t) clearTimeout(t) console global process 模块级的全局变量 __dirname __filename require() module

node.js学习笔记(17) cluster

从笔记(14)就提及多进程,今日总算可以进入正题. 从v0.6.x开始,Node.js提供了多进程模块cluster,允许创建一组进程来共享同一个socket,并且分担负载压力. 官方文档是这样说的: A single instance of Node.js runs in a single thread. To take advantage of multi-core systems the user will sometimes want to launch a cluster of Nod