默认的目录是:当前用于的家目录下的.pm2目录(此目录可以自定义,请参考:自定义启动文件),详细信息如下:
$HOME/.pm2 #will contain all PM2 related files
$HOME/.pm2/logs #will contain all applications logs
$HOME/.pm2/pids #will contain all applications pids
$HOME/.pm2/pm2.log #PM2 logs
$HOME/.pm2/pm2.pid #PM2 pid
$HOME/.pm2/rpc.sock #Socket file for remote commands
$HOME/.pm2/pub.sock #Socket file for publishable events
$HOME/.pm2/conf.js #PM2 Configuration
这里可以自定义启动文件
[root@moppotest node]
"apps":
"name": "push-web",
"cwd": "/root/node/node/",
"script":"./push-web/app.js",
"exec_interpreter": "bash",
"min_uptime": "60s",
"max_restarts": 30,
"exec_mode" : "cluster_mode",
"error_file" : "./logs/push-web-err.log",
"out_file": "./logs/push-web-out.log",
"pid_file": "./logs/push-web.pid"
//这里的logs目录为/root/node/node/logs
apps:json结构,apps是一个数组,每一个数组成员就是对应一个pm2中运行的应用
name:应用程序的名称
cwd:应用程序所在的目录
script:应用程序的脚本路径
exec_interpreter:应用程序的脚本类型,这里使用的shell,默认是nodejs
min_uptime:最小运行时间,这里设置的是60s即如果应用程序在60s内退出,pm2会认为程序异常退出,此时触发重启max_restarts设置数量
max_restarts:设置应用程序异常退出重启的次数,默认15次(从0开始计数)
exec_mode:应用程序启动模式,这里设置的是cluster_mode(集群),默认是fork
error_file:自定义应用程序的错误日志文件
out_file:自定义应用程序日志文件
pid_file:自定义应用程序的pid文件
watch:是否启用监控模式,默认是false。如果设置成true,当应用程序变动时,pm2会自动重载。这里也可以设置你要监控的文件。
每个配置完成,为了方便管理和启动,编写如下脚本
#!/bin/bash
echo -e '''\033[0;32mPlease choice your action:
[1]start
[2]stop
[3]restart
\033[0m'''
echo "========================"
read NUM
if [ $NUM == 1 ]
STATUS=start
elif [ $NUM == 2 ]
STATUS=stop
STATUS=restart
pm2 $STATUS /root/node/node/push-install.json
pm2 $STATUS /root/node/node/push-web.json
pm2 $STATUS /root/node/node/app-web.json
pm2 $STATUS /root/node/node/app-ubc.json
echo -e "\033[0;31m=====Now show you node status========\033[0m"
sleep 5
pm2 list
这里附上pm2 常用命令
1. 启动
# pm2 start app.js
# pm2 start app.js --name my-api #my-api为PM2进程名称
# pm2 start app.js -i 0 #根据CPU核数启动进程个数
# pm2 start app.js --watch #实时监控app.js的方式启动,当app.js文件有变动时,pm2会自动reload
2. 查看进程
# pm2 list
# pm2 show 0 或者 # pm2 info 0 #查看进程详细信息,0为PM2进程id
3. 监控
# pm2 monit
4. 停止
# pm2 stop all #停止PM2列表中所有的进程
# pm2 stop 0 #停止PM2列表中进程为0的进程
5. 重载
# pm2 reload all #重载PM2列表中所有的进程
# pm2 reload 0 #重载PM2列表中进程为0的进程
6. 重启
# pm2 restart all #重启PM2列表中所有的进程
# pm2 restart 0 #重启PM2列表中进程为0的进程
7. 删除PM2进程
# pm2 delete 0 #删除PM2列表中进程为0的进程
# pm2 delete all #删除PM2列表中所有的进程
8. 日志操作
# pm2 logs [--raw] #Display all processes logs in streaming
# pm2 flush #Empty all log file
# pm2 reloadLogs #Reload all logs
9. 升级PM2
# npm install pm2@lastest -g #安装最新的PM2版本
# pm2 updatePM2 #升级pm2
10. 更多命令参数请查看帮助
# pm2 --help
参考链接:https://www.npmjs.com/package/pm2
方法一:直接引用pm2官方的:http://pm2.keymetrics.io/docs/usage/log-management/LogconfigurationCLIExample:$pm2sta...
来自: whitehack的专栏
不管是什么项目,日志一直是一个重要组成部分,它可以随时供你查看重要数据信息,在nodejs中查看实时日志可以用pm2 logs查看,如果用户比较多怎么办了?如何将正常日志和错误日志分开?如何对每天的日...
来自: u013196396的博客
pm2 常用命令pm2 list 查看pm2 start … 开始pm2 restart / 重启pm2 stop / 停止pm2 delete / 删除pm2 info / 基本信息pm2 log ...
来自: m0_37068028的博客
最近接了个新需求,让在服务器通过Nodejs去打日志文件,捕捉请求日志。。。然后我就想到了log4js……废话不多说,上代码安装log4jsnpm install log4js --save对log4...
来自: 误入歧途的程序猿
使用pm2管理node应用的进程时,进程运行期间的日志会一直往一个文件中写入。默认的情况下会写入~/.pm2/logs/xxx-id.out 和 ~/.pm2/logs/xxx-id.err中,我们可...
来自: weixin_30896763的博客
我使用pm2的cluster集群模式管理node服务,使用log4js打印日志。最近公司业务量上升,与此同时问题订单也随之增多。但多次在排查异常订单时找不到订单的正常日志,在基本排除程序本身问题后我将...
来自: chuizuidian5078的博客
一个典型的日志切割脚本,废话不多说,直接上代码(大神勿骂emmmm)#/bin/bash#日志切割file1=日志目录绝对路径file=日志文件存放路径date=`date +%Y%m%d%H%M`d...
来自: weixin_42345934的博客
修改日志路径不生效今天在用pm2部署时遇到一个问题,修改pm2配置文件后不生效。我的配置文件用的是json格式的(ecosystem.json),增加日志路径后重启,日志路径还是原来的路径。//eco...
来自: weixin_33717298的博客
pm2日志记录和日志分割pm2介绍pm2是nodejs进程管理工具,现在基本是node生产服务器的标准选择,可以帮助我们实现node多进程服务,开启的多个实例自动实现负载均衡。 最重要的是保证node...
来自: weixin_30535167的博客
nginx日志按天生成&定期删除日志问题:nginx会按照nginx.conf的配置生成access.log和error.log,随着访问量的增长,日志文件会越来越大,既会影响访问的速度(写入...
来自: zhenzhendeblog的博客
const log4js = require('log4js'); log4js.configure({ appenders: { cheese: { type: 'file', filename...
来自: 布拉
pm2是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载,PM2是完美的,下面我们来看pm2常用的命令用法介绍吧。P...
来自: chengxuyuanyonghu的专栏
在pm2 运行中,如果手动删除日志文件,那么后续的日志不会被写入,需要重启pm2的进程。pm2 flush可以清理日志不需要重启 ...
来自: chixiatan8309的博客
本博客记录工作中需要的linux运维命令,大学时候开始接触linux,会一些基本操作,可是都没有整理起来,加上是做开发,不做运维,有些命令忘记了,所以现在整理成博客,当然vi,文件操作等就不介绍了,慢...
来自: Nicky's blog
应用主要以下几个日志可以清理1.并发日志 $APPLCSF/log2.并发输出 $APPLCSF/out3. Apache缓存日志 $INST_TOP/ora/10.1.3/j2ee/o...
来自: lzl1101206656的博客
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频...
来自: 帅地
最近打开服务器发现系统盘空间只剩下1个G了。但是最近基本上没有任何操作,想想也不可能是msyql短时间内存储了十几个G的数据吧,应该是生成的日志文件或者缓存的图片等文件。接下来对怀疑点进行排查:嫌疑对...
来自: u014132820的专栏
node项目在使用pm2启动项目时,开启watch监听会导致文件上传(上传至该项目内部的情况)出现服务器502的问题,或文件上传一直pending中,返回未登录.原因:pm2监听到项目内部文件修改,自...
来自: u011321082的专栏
1、创建log_cleaning.sh#!/bin/bash#compress yesterday's file in /home/sc/applogs/goods-manage/catalina#a...
来自: wangtingting_100的博客
一、PM2常用命令假设你现在已经写好了一个app.js的文件,需要启动,你可以使用pm2进行管理1. 启动# pm2 start app.js # pm2 start app.js --name my...
来自: taoerchun的专栏
使用pm2-logrotate进行pm2日志切割,测试是按照文件大小1k切割;安装pm2 install pm2-logrotate设置 重启截图截图是按照文件大小分割,如果文件小于设置分割的大小,每...
来自: 意外金喜
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm...
来自: qq_43764365的博客
如今,双11不光是购物狂欢节,更是对技术的一次“大考”,对于阿里巴巴企业内部运营的基础保障技术而言,亦是如此。回溯双11历史,这背后也经历过“小米加步枪”的阶段:作战室从随处是网线,交换机放地上的“一...
来自: 阿里云技术
前奏:今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。以下就是他的简历和面试情况。基本情况:专业技能:1、 熟悉Sping了解SpringMVC、SpringBoo...
来自: HarderXin的专栏
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都...
来自: 黄河敏捷开发
当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。已经有好几个朋友问我mba怎么样了,所以今天...
来自: Diana5253的博客
在阿里,40岁的奋斗姿势在阿里,什么样的年纪可以称为老呢?35岁?在云网络,有这样一群人,他们的平均年龄接近40,却刚刚开辟职业生涯的第二战场。他们的奋斗姿势是什么样的呢?洛神赋“翩若惊鸿,婉若游龙。...
来自: 阿里云云栖号
进程通信是指进程之间的信息交换。这里需要和进程同步做一下区分,进程同步控制多个进程按一定顺序执行,进程通信是一种手段,而进程同步是目标。从某方面来讲,进程通信可以解决进程同步问题。 首先回顾下我...
来自: 丹丹的后花园
转载自:http://www.111cn.net/sys/linux/100927.htmhttp://www.111cn.net/sys/linux/100927.htm一、简介pm2是一个带有负载...
来自: 在梦中享一刻静谧,等待梦中的你
GitHub 地址:https://github.com/Unitech/pm2写在前面文章主要来自豆瓣上一位同学的文章:PM2 介绍,中间可能有部分修改!介绍PM2 是一个带有负载均衡功能的 Nod...
来自: weixin_33824363的博客
很早就很想写这个,今天终于写完了。游戏截图:编译环境: VS2017游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言...
来自: 张宜强的博客
该篇文章源码:Nodejs实现自动清理elasticsearch过期索引(日志清理)--学习笔记 http://blog.csdn.net/gzy11/article/details/55260615
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私......
来自: 爱开发
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,...
来自: 帅地