windows启动时使用批处理文件启动pm2?

Posted

技术标签:

【中文标题】windows启动时使用批处理文件启动pm2?【英文标题】:Using a batch file to start pm2 when windows starts? 【发布时间】:2017-08-13 05:42:25 【问题描述】:

我无法让pm2 在 Windows 上启动我的应用程序。我正在运行 Windows Server 2012 R2 Standard 和 pm2 2.4.2

我有一个 JSON 格式的pm2 process file,我用它来启动我的所有应用程序。

c:\pm2\process.json


  "apps": [
    
      "name" : "my-app",
      "script" : "c:\\node\\myapp\index.js"
    
  ]

我有一个使用 JSON 文件的批处理文件:

c:\pm2\pm2-startup.bat

@echo off

set HOMEDRIVE=C:
set PM2_HOME=C:\etc\.pm2
setx /M PM2_HOME C:\etc\.pm2

cd C:\pm2 & pm2 start process.json

我有一个 Windows 任务计划运行批处理文件:

触发器:启动时 在以下条件下运行:管理员帐户 无论用户是否登录都运行: 以最高权限运行: 操作:启动程序 脚本:C:\pm2\pm2-startup.bat 开始于:C:\pm2

如果我手动运行批处理文件(双击它),它可以工作。如果我手动运行计划任务(右键单击,运行),它可以工作。

当我重新启动服务器并检查计划任务时,它已经运行,没有错误,但是应用程序没有运行。执行pm2 list 显示表格中没有应用程序。

我不想使用 pm2-windows-service,因为我不想将 pm2 作为服务运行(试过了,结果很不稳定)。

我也不想使用pm2-windows-startup,因为它似乎不适用于pm2 process file,它只是试图记住之前运行的内容。

我确实想在启动时使用一个普通的批处理文件。

我对批处理文件做错了什么..?为什么定时任务运行正常,但是pm2列表是空的..?

【问题讨论】:

【参考方案1】:

我知道这是一个老问题,但我会为以后的搜索留下答案。

您可以在 Windows 启动文件夹中放置 .bat 文件的快捷方式。

假设 PM2 cmd 在路径中,您的 bat 文件可能如下所示。

@echo off

SET PM2_HOME=C:\Users\pstart\.pm2

pm2 start C:\path\to\run.js

这将启动 PM2 并运行程序。现在,您只需将 bat 文件保存在某个位置,然后通过单击开始按钮 -> 运行 -> shell:startup 并将其粘贴到 Windows 启动文件夹中创建一个快捷方式。

【讨论】:

以上是关于windows启动时使用批处理文件启动pm2?的主要内容,如果未能解决你的问题,请参考以下文章

markdown 在Windows 8和10用户中启动时运行批处理文件

为啥在 FreeCommander 中双击启动批处理文件时 CMD 找不到 wsl 命令?

如何用批处理文件(.bat)停止或启动windows的服务 ?

使用批处理文件创建和启动 Windows 7 或 10 服务?

使用批处理文件/CMD 切换窗口焦点

使用`start`在Windows批处理文件中使用双引号启动进程的副作用