# Запуск Manticore вручную

Вы также можете запустить Manticore Search, вызвав напрямую `searchd` (исполняемый файл сервера Manticore Search):

```shell
searchd [OPTIONS]
```

Обратите внимание, что без указания пути к файлу конфигурации `searchd` попытается найти его в нескольких местах в зависимости от операционной системы.


## Параметры командной строки searchd


Доступные для `searchd` во всех операционных системах параметры:

* `--help` (сокращённо `-h`) выводит список всех параметров, которые могут быть использованы в вашей конкретной сборке `searchd`.
* `--version` (сокращённо `-v`) показывает информацию о версии Manticore Search.
* `--quiet` (сокращённо `-q`) подавляет вывод при запуске, кроме ошибок (баннер и сообщения о предварительном кэшировании).
* `--config <file>` (сокращённо `-c <file>`) указывает `searchd` использовать указанный файл в качестве конфигурации.
* `--auth` запускает интерактивный режим [начальной настройки аутентификации](../Security/Authentication_and_authorization.md#Creating-the-first-administrator). Используйте его после запуска `searchd` с включенной аутентификацией, чтобы создать первого администратора. Запущенный демон должен использовать тот же файл конфигурации, `pid_file` должен быть настроен и доступен для чтения, а хранилище аутентификации должно отсутствовать или быть пустым. Начальная настройка отклоняет непустое хранилище аутентификации, предоставляет первому администратору все действия и не возвращает bearer-токен. После начальной настройки используйте `TOKEN` или HTTP `POST /token`, если администратору нужен доступ по bearer-токену.
* `--auth-non-interactive` запускает режим начальной настройки аутентификации, при котором имя администратора, пароль и подтверждение пароля считываются из stdin. Для него действуют те же требования к демону, `pid_file`, пустому хранилищу и отсутствию токена, что и для `--auth`.
* `--check` проверяет файл конфигурации, убеждается, что сервер может с ним запуститься, а затем завершает работу. Выводит `OK` и завершается с кодом 0, если проверка прошла успешно. Если проверка не удалась, завершается с кодом 1 и выводит ту же ошибку, которую `searchd` вывел бы при обычном запуске.
* `--stop` используется для асинхронной остановки `searchd`, используя данные PID-файла, указанного в конфигурационном файле Manticore. Поэтому вам также может потребоваться указать `searchd`, какой конфигурационный файл использовать, с помощью опции `--config`. Пример:

    ```bash
  $ searchd --config /etc/manticoresearch/manticore.conf --stop
    ```

* `--stopwait` используется для синхронной остановки `searchd`. `--stop` по сути говорит запущенному экземпляру завершиться (отправляя ему SIGTERM) и затем немедленно возвращает управление. `--stopwait` также попытается дождаться, пока запущенный экземпляр `searchd` фактически завершит процесс остановки (например, сохранит все ожидающие изменения атрибутов) и завершится. Пример:

    ```bash
  $ searchd --config /etc/manticoresearch/manticore.conf --stopwait
    ```
  Возможные коды завершения следующие:
    * 0 при успехе
    * 1 если не удалось подключиться к запущенному серверу searchd
    * 2 если сервер сообщил об ошибке во время остановки
    * 3 если сервер аварийно завершился во время остановки

* Команда `--status` используется для запроса статуса запущенного экземпляра `searchd`, используя данные подключения из (опционально) предоставленного конфигурационного файла. Она попытается подключиться к запущенному экземпляру, используя первый найденный UNIX-сокет или TCP-порт из конфигурационного файла. В случае успеха она запросит ряд значений статуса и счётчиков производительности и выведет их. Вы также можете использовать команду [SHOW STATUS](../Node_info_and_management/Node_status.md#SHOW-STATUS) для доступа к тем же самым счётчикам через SQL-протокол. Примеры:

    ```bash
  $ searchd --status
  $ searchd --config /etc/manticoresearch/manticore.conf --status
    ```

* `--pidfile` используется для явного принудительного использования PID-файла (где хранится идентификационный номер процесса `searchd`) несмотря на любые другие отладочные опции, которые говорят об обратном (например, `--console`). Это отладочная опция.

    ```bash
  $ searchd --console --pidfile
    ```

* `--console` используется для принудительного перевода `searchd` в консольный режим. Обычно Manticore работает как обычное серверное приложение и записывает информацию в файлы журналов (как указано в конфигурационном файле). Однако при отладке проблем в конфигурации или самом сервере, или при попытке диагностировать трудноуловимые проблемы, может быть проще заставить его выводить информацию напрямую в консоль/командную строку, из которой он был вызван. Запуск в консольном режиме также означает, что процесс не будет разветвляться (поэтому поиски выполняются последовательно) и журналы не будут записываться. (Следует отметить, что консольный режим не является предназначенным методом для запуска `searchd`.) Вы можете вызвать его так:

    ```bash
  $ searchd --config /etc/manticoresearch/manticore.conf --console
    ```

* Опции `--logdebug`, `--logreplication`, `--logdebugv` и `--logdebugvv` включают дополнительный отладочный вывод в журнал сервера. Они различаются по уровню детализации журналирования. Это отладочные опции, и их обычно не следует включать, так как они могут сильно засорить журнал. Их можно временно использовать по запросу для помощи в сложных сессиях отладки.

* `--iostats` используется вместе с опциями журналирования (`query_log` должен быть активирован в `manticore.conf`) для предоставления более подробной информации по каждому запросу о операциях ввода/вывода, выполненных в ходе этого запроса, с небольшим снижением производительности и немного большими журналами. Статистика IO не включает информацию об операциях IO для атрибутов, так как они загружаются с помощью mmap. Чтобы включить её, вы можете запустить `searchd` следующим образом:

    ```bash
  $ searchd --config /etc/manticoresearch/manticore.conf --iostats
    ```

* `--cpustats` используется для предоставления отчёта о фактическом времени процессора (в дополнение к реальному времени) как в файле журнала запросов (для каждого заданного запроса), так и в отчёте о статусе (агрегированном). Это зависит от системного вызова Linux `clock_gettime()` или переходит к менее точному вызову на определённых системах. Вы можете запустить `searchd` так:

    ```bash
  $ searchd --config /etc/manticoresearch/manticore.conf --cpustats
    ```

*  `--port portnumber` (сокращённо `-p`) используется для указания порта, который Manticore должен прослушивать для принятия запросов по бинарному протоколу, обычно для целей отладки. Обычно по умолчанию это 9312, но иногда вам нужно запустить его на другом порту. Указание его в командной строке переопределит всё, указанное в конфигурационном файле. Допустимый диапазон — от 0 до 65535, но порты с номерами 1024 и ниже обычно требуют привилегированной учётной записи для запуска.

  Пример использования:

    ```bash
  $ searchd --port 9313
    ```

* `--listen ( address ":" port | port | path ) [ ":" protocol ]` (или сокращённо `-l`) Работает как `--port`, но позволяет указать не только порт, но и полный путь, IP-адрес и порт, или путь к Unix-доменному сокету, который будет прослушивать `searchd`. Другими словами, вы можете указать либо IP-адрес (или имя хоста) и номер порта, либо просто номер порта, либо путь к Unix-сокету. Если вы укажете номер порта, но не адрес, searchd будет прослушивать все сетевые интерфейсы. Unix-путь идентифицируется начальным слэшем. В качестве последнего параметра вы также можете указать обработчик протокола (слушатель), который будет использоваться для соединений на этом сокете. Поддерживаемые значения протокола: 'sphinx' и 'mysql' (протокол MySQL, используемый с версии 4.1).

* `--force-preread` запрещает серверу обслуживать любые входящие соединения до завершения предварительного чтения файлов таблиц. По умолчанию при запуске сервер принимает соединения, пока файлы таблиц лениво загружаются в память. Эта опция расширяет поведение и заставляет его ждать, пока файлы не будут загружены.

* `--index (--table) <table>` (или сокращённо `-i (-t) <table>`) заставляет этот экземпляр `searchd` обслуживать только указанную таблицу. Как и `--port` выше, это обычно для целей отладки; более долгосрочные изменения обычно следует вносить в сам конфигурационный файл.

* `--strip-path` удаляет пути из всех имен файлов, на которые ссылается таблица (стоп-слова, формы слов, исключения и т.д.). Это полезно для использования таблиц, созданных на другой машине с возможными отличиями в расположении путей.

* Переключатель `--replay-flags=<OPTIONS>` можно использовать для указания списка дополнительных опций воспроизведения бинарного лога. Поддерживаемые опции:
    * `accept-desc-timestamp` — игнорировать понижающиеся временные метки транзакций и воспроизводить такие транзакции в любом случае (поведение по умолчанию — выход с ошибкой).
    * `ignore-open-errors` — игнорировать отсутствие файлов binlog (поведение по умолчанию — выход с ошибкой).
    * `ignore-trx-errors` — игнорировать любые ошибки транзакций и пропустить текущий файл binlog (поведение по умолчанию — выход с ошибкой).
    * `ignore-all-errors` — игнорировать все описанные выше ошибки (поведение по умолчанию — выход с ошибкой).

    Пример:

    ```bash
    $ searchd --replay-flags=accept-desc-timestamp
    ```

* `--coredump` используется для включения сохранения core-файла или минидампа сервера при сбое. По умолчанию отключено для ускорения перезапуска сервера после сбоя. Это полезно для целей отладки.

    ```bash
  $ searchd --config /etc/manticoresearch/manticore.conf --coredump
    ```

* `--new-cluster` инициализирует кластер репликации и делает сервер эталонным узлом с защитой [перезапуска кластера](../Creating_a_cluster/Setting_up_replication/Restarting_a_cluster.md). В Linux также можно запустить `manticore_new_cluster`. Он запустит Manticore в режиме `--new-cluster` через systemd.

* `--new-cluster-force` инициализирует кластер репликации и делает сервер эталонным узлом, обходя защиту [перезапуска кластера](../Creating_a_cluster/Setting_up_replication/Restarting_a_cluster.md). В Linux также можно запустить `manticore_new_cluster --force`. Он запустит Manticore в режиме `--new-cluster-force` через systemd.

* `--mockstack` анализирует и выводит необходимые размеры стека для рекурсивной оценки выражений, операций сопоставления с образцом и обработки фильтров. Эта отладочная опция выводит рассчитанные требования к стеку в консоль для целей оптимизации. Вывод содержит переменные окружения, которые можно использовать для настройки требований к стеку для разных операций.

  Пример:

    ```bash
  $ searchd --mockstack
  Manticore 7.4.7 e90b5afbb@25032706 dev (columnar 4.1.2 15bbcc7@25031206) (secondary 4.1.2 15bbcc7@25031206) (knn 4.1.2 15bbcc7@25031206)
  Copyright (c) 2001-2016, Andrew Aksyonoff
  Copyright (c) 2008-2016, Sphinx Technologies Inc (http://sphinxsearch.com)
  Copyright (c) 2017-2025, Manticore Software LTD (https://manticoresearch.com)
  
  export MANTICORE_KNOWN_CREATE_SIZE=200
  export MANTICORE_START_KNOWN_CREATE_SIZE=4504
  export MANTICORE_KNOWN_EXPR_SIZE=16
  export MANTICORE_START_KNOWN_EXPR_SIZE=200
  export MANTICORE_NONE=32
  export MANTICORE_START_NONE=104
  export MANTICORE_KNOWN_FILTER_SIZE=224
  export MANTICORE_START_KNOWN_FILTER_SIZE=11192
  export MANTICORE_KNOWN_MATCH_SIZE=320
  export MANTICORE_START_KNOWN_MATCH_SIZE=14552
  export NO_STACK_CALCULATION=1
    ```

* `--safetrace` принуждает `searchd` использовать только системный вызов backtrace() в отчетах об аварии. В некоторых (редких) случаях это может быть более "безопасным" способом получения такого отчета. Это опция отладки.

*   `--nodetach` (только Linux): предотвращает отключение `searchd` в фон. В этом режиме записи лога выводятся прямо в консоль. Обработка запросов не затрагивается. Эта опция предназначена для отладки или для захвата вывода при запуске Manticore в контейнере Docker.

### Опции для Windows

Существуют некоторые опции для `searchd`, специфичные для платформ Windows, связанные с обработкой как службы, и доступны только в бинарных файлах для Windows.

Обратите внимание, что в Windows `searchd` по умолчанию запускается в режиме `--console`, если он не установлен как служба.

* `--install` устанавливает `searchd` как службу в Microsoft Management Console (Панель управления / Администрирование / Службы). Любые другие параметры, указанные в командной строке вместе с `--install`, также будут включены в командную строку при последующих запусках службы. Например, при вызове `searchd` вам, вероятно, потребуется также указать конфигурационный файл с помощью `--config`, и это нужно делать вместе с `--install`. После установки будут доступны обычные средства запуска/остановки через консоль управления, поэтому любые методы управления службами также применимы к `searchd`. Пример:

    ```bat
  C:\WINDOWS\system32> C:\Manticore\bin\searchd.exe --install
     --config C:\Manticore\manticore.conf
    ```

  Если вы хотите видеть статистику ввода-вывода при каждом запуске `searchd`, нужно указать опцию в той же строке, что и команда `--install`, следующим образом:

    ```bat
  C:\WINDOWS\system32> C:\Manticore\bin\searchd.exe --install
     --config C:\Manticore\manticore.conf --iostats
    ```
* `--delete` удаляет службу из Microsoft Management Console и других мест регистрации служб после ее предыдущей установки с `--install`. Обратите внимание, что это не удаляет программное обеспечение и не удаляет таблицы. Это означает, что служба не будет вызываться системой служб и не будет запускаться при следующем старте машины. Если служба запущена в данный момент, текущий экземпляр не будет завершен (до следующей перезагрузки или до вызова `--stop`). Если служба была установлена с кастомным именем (с помощью `--servicename`), то при удалении нужно указать то же имя с `--servicename`. Пример:

    ```bat
  C:\WINDOWS\system32> C:\Manticore\bin\searchd.exe --delete
    ```

* `--servicename <name>` задает данное имя для `searchd` при установке или удалении службы, как оно будет отображаться в консоли управления; по умолчанию это searchd, но если применяется на серверах с несколькими администраторами или системах с несколькими экземплярами `searchd`, может иметь смысл использовать более описательное имя. Обратите внимание, что без сочетания с `--install` или `--delete` эта опция ни на что не влияет. Пример:

    ```bat
  C:\WINDOWS\system32> C:\Manticore\bin\searchd.exe --install
     --config C:\Manticore\manticore.conf --servicename ManticoreSearch
    ```

* `--ntservice` — опция, которую Microsoft Management Console передает `searchd` для запуска его как службы на платформах Windows. Обычно вызывать ее напрямую не нужно; Windows вызовет ее сама при запуске службы, хотя теоретически можно запустить и из командной строки (в дополнение к `--console`).

## Каталог плагинов

Manticore использует [plugin_dir](../Server_settings/Common.md#plugin_dir) для хранения и использования плагинов Manticore Buddy. По умолчанию это значение доступно пользователю "manticore" в стандартной установке. Однако если вы запускаете демон searchd вручную под другим пользователем, демон может не иметь доступа к `plugin_dir`. Чтобы решить эту проблему, убедитесь, что вы указали `plugin_dir` в секции common, куда пользователь, запускающий демон searchd, имеет права записи.

## Сигналы

`searchd` поддерживает несколько сигналов:

* `SIGTERM` - Инициирует корректное завершение работы. Новые запросы не будут обрабатываться, но уже начатые запросы не будут принудительно прерваны.
* `SIGHUP` - Инициирует ротацию таблиц. В зависимости от значения настройки [seamless_rotate](../Server_settings/Searchd.md#seamless_rotate), новые запросы могут быть ненадолго приостановлены; клиенты будут получать временные ошибки.
* `SIGUSR1` - Принудительно переоткрывает файлы журнала searchd и журнала запросов, что позволяет выполнить ротацию файлов журналов.

## Переменные окружения

* `MANTICORE_TRACK_DAEMON_SHUTDOWN=1` включает подробное логирование во время завершения работы searchd. Это полезно в случае некоторых проблем с завершением работы, например, когда Manticore слишком долго завершает работу или зависает в процессе завершения.
<!-- proofread -->
