使用批处理文件在Windows启动时启动PM2?

6
我无法使用pm2在Windows启动时启动我的应用程序。我正在运行Windows Server 2012 R2标准版和pm2 2.4.2
我有一个以JSON格式编写的pm2进程文件,我使用它来启动所有我的应用程序。

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 列表为空呢?
2个回答

9

我知道这是一个老问题,但我将留下一个答案供未来搜索之用。

你可以在Windows启动文件夹中放置一个指向.bat文件的快捷方式。

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

@echo off

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

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

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


0
在你的“操作:启动程序”中,你应该捕获批处理文件的输出,以便查看正在进行的情况。
在操作中添加“添加参数”。 类似这样的内容:> C:\temp\pm2_batch_log.txt 2>&1 另外,可以通过配置Windows服务来实现。 这是我正在使用的示例

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接