Запуск и остановка узлов поиска в окнах
Я пытаюсь запустить эластичный поиск как процесс и остановить его, не закрывая командную строку. Для создания нового процесса я использую:
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.
Как я могу получить PID или имя процесса, чтобы использовать taskkill для уничтожения этого процесса с помощью этой команды или чего-то подобного из уже открытой командной строки или из существующей командной строки, в которой выполняется процесс узла asticsearch:
taskkill /PID <pid>
Пид 5800(показанный в журнале процесса в консоли выше) не работает. В диспетчере задач Windows не было процесса с именем asticsearch. У него есть только процесс cmd для командной строки, в которой работает эластичный поиск, и когда я уничтожаю этот процесс, эластичный поиск также будет уничтожен.
3 ответа
Я бы установил и запустил Elasticsearch как службу Windows:
Пользователи Windows могут настроить Elasticsearch для запуска в качестве службы для запуска в фоновом режиме или запуска автоматически при запуске без какого-либо вмешательства пользователя. Это может быть достигнуто с помощью сценария service.bat в папке bin / folder, который позволяет устанавливать, удалять, управлять или настраивать службу, а также запускать и останавливать службу из командной строки.
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-service-win.html
Он позволяет запускать такие команды, как start и stop, чтобы запускать и завершать эластичный поиск из сценария, не отслеживая идентификаторы процессов или не открывая ту же командную строку.
ОБНОВИТЬ:
Чтобы запустить несколько экземпляров Elasticsearch одновременно с сервисами, вам нужно будет указать уникальный serviceid при установке сервиса:
Для сценария требуется один параметр (команда для выполнения), за которым следует необязательный параметр, указывающий идентификатор службы (полезно при установке нескольких служб Elasticsearch).
Что касается порта и IP-адреса, на котором работает ES, то он не должен отличаться, но я бы проверил ваши конфигурационные файлы (asticsearch.yml) и вашу конфигурацию регистрации (logging.yml). Более подробно о параметрах конфигурации здесь:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup-configuration.html
Если вы устанавливаете Elasticsearch в качестве службы в Windows, вы можете запускать / останавливать с панели управления службами, более подробную информацию о запуске / остановке с использованием CMD см. В ссылке.
Способ выше удобный и правильный. Я пробую другие способы остановить ElasticSearch и записать здесь,
Прежде чем узнать метод выше, сначала я предполагаю, что ElasticSearch может быть процессом в диспетчере задач, поэтому я нашел по имени и действительно нашел имя процесса ElasticSearch.exe
, но после того, как я убью этот процесс, я все еще могу получить ElasticSearch Info от http://localhost:9200/
это порт ElasticSearch на моем компьютере, это означает, что ElasticSearch все еще работает.
Позже я пришел к выводу, что, может быть, я могу убить его port
Я нашел статью, использующую PowerShell для уничтожения процесса по порту, поэтому я запускаю PowerShell, затем выполняю Stop-Process -Id (Get-NetTCPConnection -LocalPort 9200).OwningProcess -Force
и это говорит мне:
Остановка процесса: не удается остановить процесс "Java (22356)" , Доступ запрещен。 + Остановить процесс -Id (Get-NetTCPConnection -LocalPort 9200).OwningProcess ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: CloseError: (System.Diagnostics.Process (java):Process) [Stop-Process],ProcessCommandException
это может быть вызвано тем, что вы не работаете от имени администратора, но по информации, которую я могу сказать, настоящий процесс, выполняющий ElasticSearch, java.exe
и его идентификатор процесса 22356, после убийства java.exe с помощью диспетчера задач я не могу подключиться к http://localhost:9200/
Это значит, что я успешно остановил ElasticSearch.
Вы можете остановить это, используя
net stop elasticsearch
Сначала откройте powershell от имени администратора и выполните следующую команду:
net stop elasticsearch