我正在尝试将elasticsearch作为一个进程启动并在不关闭命令提示符的情况下停止它。为了创建一个新流程,我正在使用:
C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>start /B elasticsearch
C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>start /B elasticsearch
C:\Users\User1\Desktop\Work\ElasticSearch\elasticsearch-1.3.1\bin>[2014-08-19 15:23:26,351][WARN ][bootstrap ] jvm uses the c
lient vm, make sure to run `java` with the server vm for best performance by adding `-server` to the command line
[2014-08-19 15:23:26,433][INFO ][node ] [Batroc the Leaper] version[1.3.1], pid[5800], build[2de6dc5/2014-07-28T14:45:15
Z]
该流程在端口9200上运行。
如何使用此命令或类似于已打开的命令提示符或运行elasticsearch节点进程的现有命令提示符来获取进程PID或名称以使用taskkill终止此进程:
taskkill /PID <pid>
5800的Pid(在上面的控制台中显示在进程日志中)不起作用。 Windows任务管理器没有名为elasticsearch的进程。它只有一个cmd进程用于运行elasticsearch的命令提示符,当我终止该进程时,elasticsearch也会被杀死。
答案 0 :(得分:4)
我将Elasticsearch安装并运行为Windows服务:
Windows用户可以将Elasticsearch配置为作为要运行的服务运行 在后台或在没有任何用户的情况下在启动时自动启动 相互作用。这可以通过service.bat脚本来实现 bin /文件夹,允许用户安装,删除,管理或配置 所有服务都可以启动和停止服务 命令行。
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-service-win.html
它允许您运行start和stop之类的命令来运行并终止来自脚本的elasticsearch,而无需跟踪进程ID或保持相同的命令提示符处于打开状态。
更新:
要在服务的同时运行Elasticsearch的多个实例,您需要在安装服务时传递一个唯一的serviceid:
脚本需要一个参数(要执行的命令),然后是 一个指示服务ID的可选项(在安装时很有用) 多个Elasticsearch服务)。
关于运行ES的端口和IP地址应该没有什么不同 - 但我要检查您的配置文件(elasticsearch.yml)和日志配置(logging.yml)。有关配置选项的更多详细信息:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-configuration.html
答案 1 :(得分:0)
如果您Installing Elasticsearch as a Service on Windows,则可以从“服务”控制面板中启动/停止,有关更多信息,例如启动/停止使用CMD,请参见链接。
以上方法方便且正确。我尝试了其他方法来停止ElasticSearch并在此处进行记录,
在了解上述方法之前,首先我猜ElasticSearch可能是任务管理器中的一个进程,所以我按名称找到并确实找到了一个进程名称ElasticSearch.exe
,但是在杀死该进程之后,我仍然可以获得来自http://localhost:9200/
的ElasticSearch Info,它是我计算机上的ElasticSearch端口,这意味着ElasticSearch仍在运行。
后来我想到也许可以用port
杀死它,找到一篇using PowerShell to kill process by port,所以我启动了PowerShell,然后执行Stop-Process -Id (Get-NetTCPConnection -LocalPort 9200).OwningProcess -Force
,它告诉我:
停止进程:无法停止“ java(22356)”进程,访问被拒绝。 + Stop-Process -Id(Get-NetTCPConnection -LocalPort 9200).OwningProcess ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:CloseError:(System.Diagnostics.Process(java):Process)[Stop-Process],ProcessCommandException
这可能是由于未以管理员身份运行引起的,但是从信息中我可以看出,运行ElasticSearch的实际进程是java.exe
,其进程ID是22356,在使用任务管理器杀死java.exe之后,我无法连接到http://localhost:9200/
,这意味着我成功停止了ElasticSearch。