为了运行一个应用程序,需要启动一个批处理文件(例如启动Jetty,显示实时日志等)。只有在运行此批处理文件时,该应用程序才能正常工作。因此我被迫让这个批处理文件一直运行,并且不注销Windows服务器。
这个批处理文件能否作为服务来运行?我正在尝试从类似的问题中尝试一个建议。
这个批处理文件能否作为服务来运行?我正在尝试从类似的问题中尝试一个建议。
NSSM完全免费且超级易用,可以在以管理员身份运行的命令提示符/终端中使用:
nssm install "YourCoolServiceNameLabel"
然后会出现一个对话框,让你选择要运行的文件所在的位置。
卸载
nssm remove "YourCoolServiceNameLabel"
nssm
,以避免弹出数据输入框 - 我正在尝试自动化这个过程? - amphibient有一个内置的Windows cmd可以做到这一点:sc create。不像nssm那么花哨,但你不必下载额外的软件。
sc create "ServiceName" start= demand displayname= "DisplayName" binpath= [path to .bat file]
注意
无需额外软件。使用任务计划程序 -> 创建任务 -> 隐藏。隐藏的复选框在左下角。将任务设置为在登录时触发(或您喜欢的任何条件),并在操作选项卡中选择该任务。以隐藏方式运行它可以确保任务在后台静默运行,就像服务一样。
请注意,您还必须将程序设置为“无论用户是否登录”,否则程序仍将在前台运行。
由于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
正如Doug Currie所说,请使用RunAsService。
根据我的过去经验,您必须记住生成的服务将会:
不确定最后一个是否仍然适用...在我之前参与的一个项目中,这是一场噩梦。
我最简单的方法是使用开源svcbatch (https://github.com/mturk/svcbatch/) 作为CMD(BAT)在sc中的包装器:
sc create myservice binPath= ""%cd%\svcbatch.exe" myservice.bat"