【问题标题】:Node js start and stop windows servicesNode js 启动和停止windows服务
【发布时间】:2014-07-06 18:21:19
【问题描述】:

我有一个 nodeJS 应用程序,它与作为 Windows 服务安装的第三方应用程序通信。我的 nodeJS 应用程序需要此服务才能运行,但在某些情况下可能不需要。

我正在尝试寻找一种方法来检查此 Windows 服务是否正在运行,如果没有启动它。经过多天的搜索,我发现了许多将 nodeJS 应用程序作为 Windows 服务运行的结果,但没有一个提供启动/停止已安装的 Windows 服务的能力。

这甚至可能吗?我找到了像 PSEXEC 这样的工具,所以我可以让 nodeJS 运行这样的脚本,但如果 nodeJS 可以本地执行这个任务会更好。

为此提供的任何信息都会非常有用,我很难相信其他人没有遇到过他们也需要这样做的情况。

斯蒂芬

【问题讨论】:

    标签: node.js windows-services


    【解决方案1】:

    在 Windows 中,您可以从命令行键入:

    # Start a service
    net start <servicename>
    
    # Stop a service
    net stop <servicename>
    
    # You can also pause and continue
    

    所以,简单的答案是 - 使用子进程在服务器启动时启动服务。像这样的:

    var child = require('child_process').exec('net start <service>', function (error, stdout, stderr) {
        if (error !== null) {
            console.log('exec error: ' + error);
        }
        // Validate stdout / stderr to see if service is already running
        // perhaps.
    });
    

    编辑:我还发现了这个名为“windows-service”的 nodejs 模块。似乎对您尝试做的事情很有希望。它的一些功能是在 C++ 中实现的,它会尝试查询 Windows 服务管理器。

    【讨论】:

    • 正确,使用子进程非常感谢。
    • windows-service模块没有控制其他服务的API,它只允许将当前node.js模块作为服务运行。
    • 尤里卡!这可以立即在 Windows 10 1903 上运行。谢谢!
    • 在尝试以这种方式停止服务时,我收到“发生语法错误 5”。访问被拒绝。谁能帮忙。
    • @sabhiram- 如果我们有多个服务要停止和启动,我们如何做 nodejs..?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多