运行批处理文件作为Windows服务

问题描述 投票:0回答:7

为了运行一个应用程序,必须启动一个批处理文件(诸如“启动码头”,“显示实时日志”之类的事情)。仅当此批处理文件运行时,该应用程序才能工作。因此,我被迫运行此批处理文件,而不是从Windows Server登录。

可以作为服务运行此批处理文件吗?我正在尝试一个类似问题的建议之一。

NSSM
windows windows-services batch-file
7个回答
195
投票

nssm install "YourCoolServiceNameLabel" 将出现一个对话框,因此您可以选择要运行的文件。

卸载
nssm remove "YourCoolServiceNameLabel"

有一个内置的Windows CMD来做到这一点:

Sccreate
。不如NSSM那样花哨,但您不必下载其他软件。
sc create "ServiceName" start= demand displayname= "DisplayName" binpath= [path to .bat file]

53
投票

开始=需求意味着您必须自己启动服务。选项包括:引导,系统,自动,需求,残疾人,延迟 - 自动 需要whitespace

=

我确实遇到了服务启动的错误,即服务没有及时响应,但是很明显,服务成功地运行了.bat。尚未挖掘此操作,但是此

thread

经历了同样的事情,并使用NSSM安装服务解决了它。 批量文件内容:

16
投票
java -Xmx40960M -Xms40960M -d64 -jar minecraft_server.1.15.1.jar

所有这个是因为:

服务不知道如何在文件夹中启动,

13
投票
CMD.EXE不知道如何在文件夹中启动

开始服务将产生“及时的方式”错误,但日志文件显示服务器正在运行。
如果您需要关闭服务器,只需进入任务管理器并在背景过程中找到服务器Java并结束它,或使用 /stop命令或其他程序 /服务器从游戏中终止服务器,请使用与服务器相关的方法。
    

由于不再维护NSSM,您可以考虑使用

Winsw

。它的二进制文件可以在有或没有.net的情况下使用。
基本上,您可以创建一个XML文件,然后安装它。这是最小XML的样本:

<service> <!-- ID of the service. It should be unique across the Windows system--> <id>myapp</id> <!-- Path to the executable, which should be started --> <!-- CAUTION: Don't put arguments here. Use <arguments> instead. --> <executable>%BASE%\myExecutable.exe</executable> </service>

    然后您可以安装并启动它:
  • winsw install myapp.xml winsw start myapp.xml

尽管它不是免费的(但39美元),但Firedaemon

对我来说效果很好,我必须推荐它。它将运行您的批处理文件,但具有大量额外且非常有用的功能,例如计划,服务监视,GUI或基于XML的服务,依赖关系,环境变量和日志管理。

I开始使用Firedaemon启动JBOSS应用程序服务器(

4
投票
),但在意识到Firedaemon配置能力的丰富度使我能够抛弃批处理文件并在Firedaemon服务定义中重新创建其命令的意图。

如果您有大量的Windows服务器可以管理此服务(或技术上的任何服务),则可能需要查看的一个超级firedaemon。

Doug Currie说使用RunAsservice。

从我过去的经验中,您必须记住,您产生的服务将会

完全不同的环境变量集

未经仔细检查权利/许可问题

3
投票

确定最后一个是否仍然适用……这是我一段时间以前从事的一个项目中的一个大夜母马。

安装NSSM并将.bat文件作为Windows服务运行。 如预期的那样工作

my最简单的方法是使用opensource

Svcbatch

2
投票

https://github.com/mturk/svcbatch/svcbatch/

)作为cmd(bat)的包装:

Sc创建myService binpath =“”%cd%\ svcbatch.exe“ myService.bat”
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.