linuxpm2命令 linux命令21

Linux shell脚本按日期 切割pm2日志linux shell脚本按日期 切割pm2日志 (解决定时任务pm2命令无法执行问题linuxpm2命令,原因linuxpm2命令:没有环境变量)
首先在输入命令echo $PATH 拿到当前系统环境变量
然后在/root/.pm2目录新建cutlog.sh文件(注意:第一句一定要有,设置当前shell脚本里面的环境变量,没有的话pm2命令会无法执行)
PATH=/root/.nvm/versions/node/v6.10.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
CURPATH=/root/.pm2
OUTPATH=/home/cutLogsDate
mkdir -p $OUTPATH
INPUTPATH=$CURPATH/logs
reloadProcessLogs(){
logFilesGame="${INPUTPATH}/$1"
yesterday=`date -d last-day '+%Y%m%d_'$2`
logOfLastDay=$OUTPATH/$yesterday.log
mv $logFilesGame $logOfLastDay
touch $logFilesGame
echo "切割$1成功"
}
reloadProcessLogs 'game-out-0.log' 'game_out'
pm2 reloadLogs设置定时任务
输入crontab -e命令编辑
0 3 * * * sh /root/.pm2/cutlog.sh
在linux环境PM2使用如:
生成命令
执行命令后将生成一个ecosystem.config.js的配置文件,示例:
首先安装更新的pm2包,再更新内存中的PM2
linux上利用pm2和nginx部署项目Introduce
在开发模式的时候 , 我们常用 nodemon 和 webpack 热更新nodejs项目(如express)和前端项目(如vue),但需要部署的时候我们就不能再用开发环境的配置了,需要改成生产环境配置 。为了使得项目可以稳健的运行在服务端,node可以使用nohup启动,前端项目可以使用nginx代理 。
但是为了更加规范管理,我们应该使用pm2来管理node项目 。
nohup(不推荐使用)
作用:不挂断地运行命令 。
启动后通过 ps -ef 可以查看进程和 pid,如果需要停止,输入
需要特别注意的是,退出远程时,要使用 exit 退出,直接关闭远程工具将会导致后台静默进程停止 。
尽管nohup是内置工具,但万一服务抛异常 , 对外没有反应,表现为无端停止服务,对维护不友好 。
pm2(推荐使用)
相比 nohup,pm2 更加合理,推荐使用 pm2 部署 。
首先全局安装 pm2
为了方便 , 我们可以把 pm2 软链接到系统环境下(假设 pm2 安装路径是/usr/sbin/nodejs/bin/pm2) , 
最后在项目中添加 pm2 配置文件,processes.json
其中 name 代表进程别名,script 代表需要执行的命令,env 是注入到服务中的变量 。
最后修改 package.json 的 start 命令(项目为 express )为
如果需要查看 pm2 状态 , 使用
表明通过 pm2 启动项目 。
停止或重启服务使用
自动启动
在实际情况下,偶尔会发生服务器宕机,可是重启后pm2应用不会被自动启动 , 这时候我们就需要去保存我们的pm2状态 , 然后配置开机自启 。
执行后会输出
这表示pm2把当前应用列表启动信息保存到了磁盘文件上
执行后输出
这表明pm2往系统中写入了开机启动任务 , 开机是自动启动上次pm2保存的应用列表
这时候如果想测试,可以手动重启服务器试一下,查看一下pm2应用任务是否正确启动
再也不用担心重启后服务不起了 。
nginx
作为一个高性能的http和反向代理服务 , 在linux上不免要选用它 。
安装教程
代理教程
对于Web而已,80端口和443端口是十分重要的,原则上需要输入才可以浏览网页的,但由于默认端口是80,所以‘:80’可以忽略 。同理对于https的443端口也一样 。
所以我们常常需要在80端口监听多个服务,这就必须要用上nginx的代理功能了 。用法如下:

推荐阅读