我在 Windows XP 上将 Web 服务器作为 Web 服务启动。具体操作如下:这里
我的 Web 服务器是用 ruby/sinatra 编码的,我启动了它C:\Ruby187\bin\ruby c:\web\web2.rb
。该服务也由该代码编码。如果从命令行启动,我会在 dos 窗口中按 CTRL+C 手动停止 Web 服务器。
我承认我的 ruby 代码不是“专门编写的软件”,无法用作服务。但我想知道当我单击此服务的停止按钮时是否可以以某种方式将其关闭。
我现在该如何停止通过服务启动的服务器?我发现我可以通过以下方式停止它taskkill /f /t /im ruby.exe
有什么方法可以使用 MMC 停止服务功能来停止 Web 服务器?
我直接调用网络服务器,如图所示点击此处阅读图片中的文字。
答案1
该Stop按钮向服务的主程序发送“停止服务”控制 - 在这种情况下斯尔瓦尼剩下的就交给那个程序了。看起来斯尔瓦尼将直接忽略控制。
似乎斯尔瓦尼对于 Windows NT 4.0做杀死它的直系子代 – 你可以得到它来自 Microsoft。
可以写一个真实的Windows 服务可以很好地停止您的 Ruby 程序 - 例如,使用 Python 的win32serviceutil
。(不幸的是,似乎没有任何 Ruby 模块可以与 Windows 交互。)
从命令行或批处理脚本,这将执行与“停止”按钮相同的操作:
sc stop <name>
net stop <name>
以编程方式,您需要调用OpenSCManager(...)
,OpenService(...)
, 然后ControlService(..., SERVICE_CONTROL_STOP)
。