IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 【PM2工具在windows下对C++程序进行进程管理和日志管理】 -> 正文阅读

[JavaScript知识库]【PM2工具在windows下对C++程序进行进程管理和日志管理】


前言

本篇记录了使用PM2工具在windows下对C++程序进行进程管理和日志管理,主要使用pm2的这两项功能

  • pm2工收集程序的控制台输出,并将其记录为日志的功能 ;
  • pm2-logrotate具有日志轮换,日志压缩的功能;

主要步骤涉及以下内容:

  • nodejs包管理器的安装,
  • pm2的安装,
  • pm2启动脚本的编写,
  • pm2-logrotate的安装,
  • windows下日志轮换不生效,
  • pm2-logrotate配置文件的修改

未解决的问题:
pm2守护C++进程时,没有程序的相应界面,在任务管理器的后台进程中能找到相应的进程,不知道有没有方法可以看到界面.

1.安装nodejs

官方下载链接为:https://nodejs.org/zh-cn/,推荐下载LTS版,安装时候,尽量不要安装在系统盘 ,
[如果下载较慢,可下载其他网站上现成的]
下载后直接进行安装即可;
安装后在命令行中,输入npm应该有相应的参数显示,如下图所示

无

至此,nodejs的包管理器安装成功.


2.安装pm2

使用上一步安装的nodejs包管理器安装pm2,执行以下命令:

npm install pm2 -g
npm install pm2-windows-startup -g
pm2-startup install 

验证是否安装成功,执行:

pm2 -v

3.pm2启动脚本的编写

我的脚本比较简单,命名为myTest.config.js,这个后缀是官方推荐,目前只有守护进程的功能:

module.exports = {
  apps : [
    {
      name: "xxxapp",//进程名,显示在pm2的控制界面上
      script : "D:\\LocoPlatform\\LocoPlatform.exe",//程序的路径
      // "exec_interpreter": "node", //项目的脚本类型,默认node,可选shell,C++进程好像不能设置这个参数
      // out_file: "logs/XXX_App.log",//日志后边交由rotate工具进行管理
    },
    {
    name: "XXX_App1",
    script : "C:\\Users\\Administrator\\Desktop\\timu\\XXX123.exe",
    // out_file: "logs/XXX_App1.log",
    }
  ]
}

在这里由脚本守护了两个进程.
其他可能用到的命令:

pm2 stop xxxapp//停止进程
pm2 delete xxxapp//从管理中删除进程

4.pm2-logrotate的安装

在命令行执行以下命令,进行pm2-logrotate的安装:

pm2 install pm2-logrotate

由于pm2-logrotate在windows下的日志轮换参数不生效,需要对源代码进行如下更改
找到C:\Users\Administrator.pm2\modules\pm2-logrotate\node_modules\pm2-logrotate\app.js(我的时在这个路径)
将第65行改为下图即可,原因应该时之前的路径分隔符时linux下的,不支持windows:

function delete_old(file) {
  if (file === "/dev/null") return;
  var fileBaseName = file.substr(0, file.length - 4).split(path.sep).pop() + "__";//这是第65行

5.pm2-logrotate配置文件的修改

windows下pm2-logrotate配置的修改,有的命令会执行不生效,因此尽量不使用命令行设置,打开C:\Users\Administrator.pm2\module_conf.json
修改配置文件如下:

{
    "pm2-logrotate": {
        "max_size": "10K"//日志的大小
        "retain": 5,//日志的数量
        "compress": true,
        "dateFormat": "YYYY-MM-DD_HH-mm-ss",
        "workerInterval": "5",//日志检测的时间间隔
        "rotateInterval": "0 * * * * ? ",
        "rotateModule": true
    },
    "module-db-v2": {
        "pm2-logrotate": {}
    }
}

我理解的日志检测逻辑和分割逻辑为:

  • pm2-logrotate工具会每隔[workerInterval]的时间间隔,去检测日志的大小,若大于[max_size],就会将日志分割;
  • 当系统时间,满足[rotateInterval],也会强制进行日志分割
  • 当日志的数量大于[retain],就会删除旧的日志,ps:脚本中retain参数应该像workerInterval需增加引号,但是我没有加引号也正常使用了;

其他参数:
compress:日志是否压缩;
dateFormat:日志分割时,日志后缀命名增加的时间格式
rotateModule:是否对pm2的其他模块的日志也使用这样的配置
rotateInterval参数满足cron时间表达式的写法

其他的命令:

pm2 restart pm2-logrotate//修改配置文件后,要从pm2中删除应用,并重启日志管理应用,才能生效

6.程序守护及自动启动

编写bat脚本如下,拉起之前写的pm2进程启动脚本,并将其放在windwos的自启动目录下:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
@echo off 
start cmd.exe /k "pm2 start C:\Users\Administrator\Desktop\timu\myTest.config.js"
Pause

日志的默认生成目录为:

C:\Users\Administrator\.pm2\logs

总结

pm2进行windows进程管理主要的坑就是日志轮换中搜索得比较久.
pm2-logrotate修改配置文件后,要从pm2中删除应用(即使用pm2 delete xxx命令),并重启日志管理应用,才能生效

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-04-14 23:43:36  更:2022-04-14 23:48:00 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:25:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码