Моя служба systemd Solr не будет включена. Нет сообщения об ошибке

#solr #systemd

#solr #systemd

Вопрос:

Ранее сегодня мне удалось получить определение systemd, работающее для solr. Затем я внес изменения в определение и попытался перезагрузить его, и теперь служба почему-то больше не включена, и я не могу ее включить. Если я это сделаю…

 systemctl enable solr.service
  

… нет вывода. Нет сообщения об ошибке. Но тогда, если я это сделаю…

 systemctl -l | grep solr
  

… там ничего нет. Похоже, что при запуске «service solr start» он возвращается к System V. Запускается Solr, но он не использует определение systemd.

Если я запускаю «systemctl status solr.service», я вижу…

 # systemctl status solr.service
? solr.service - Apache SOLR
   Loaded: loaded (/etc/systemd/system/solr.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Thu 2020-10-15 18:34:09 EDT; 15min ago
 Main PID: 44533 (code=exited, status=0/SUCCESS)
  

Ответ №1:

Очевидно, служба была включена, но мне нужна была немного другая последовательность команд для ее запуска. Мне также кажется, что в моем определении systemd требуется следующее:

 Type=forking
  

Я не думаю, что мне это было нужно раньше, но, похоже, сейчас это необходимо. После каждого изменения в моем файле solr.service мне нужно запустить «systemctl daemon-reload», а затем перезапустить solr.

Мне также нужно было убедиться, что solr еще не запущен (с System V), а затем запустить его с помощью systemctl, вот так…

 service solr stop
systemctl start solr
  

Тогда я мог бы запустить «systemctl status solr.service» и получить лучший результат…

 # systemctl status solr.service
? solr.service - Apache SOLR
   Loaded: loaded (/etc/systemd/system/solr.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2020-10-15 19:27:34 EDT; 2min 49s ago
  Process: 78134 ExecStart=/opt/solr/bin/solr start (code=exited, status=0/SUCCESS)
 Main PID: 78181 (java)
    Tasks: 55
   Memory: 2.1G
   CGroup: /system.slice/solr.service
            -78181 java -server -Xms31g -Xmx31g -XX: UseG1GC -XX:MaxGCPauseMillis=500 -XX: UnlockExperimentalVMOptions -XX:G1MaxNewSizePer...
  

Отдельно я не знаю, почему я не получал никаких выходных данных…

 systemctl -l | grep solr
  

Команда systemctl сама по себе должна быть эквивалентна «systemctl list-units», а флаг -l является псевдонимом для —all . Здесь должны быть перечислены известные устройства, активные или нет.