Я ответил на этот вопрос однажды уже , но этот ответ был для операционных систем, использующих SysV, и этот - для более новых операционных систем, которые все чаще используют systemd .
Как и в моем другом ответе , здесь нужно сделать три вещи:
- Создайте сценарий и поместите его в нужное место.
- Сделайте так, чтобы скрипт правильно запускался при перезагрузке.
- Бонус: сделать
systemd
журналы постоянными.
1. Создание сценария и его размещение в нужном месте
Вот файл systemd
, который вы можете использовать (они заменяют файлы инициализации SysV). Назовите это solr.service
.
[Unit]
Description=Apache Solr
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
Environment="XMX=2G"
WorkingDirectory=/usr/local/solr/example
ExecStart=/usr/bin/java -jar -server -Xmx${XMX} start.jar
Restart=on-failure
LimitNOFILE=10000
[Install]
WantedBy=multi-user.target
Обратите внимание, что там есть конфигурация для памяти Solr. Возможно, вы захотите настроить это для своих собственных целей. Если у вас есть несколько переменных, которые вы передаете в systemd
, вы можете сделать это с помощью директивы EnvironmentFile
.
Дополнительную документацию по этим файлам можно найти здесь .
2. Сделайте запуск скрипта правильно при загрузке
Это довольно просто, но есть правила. Чтобы запустить его при загрузке, поместите файл в /etc/systemd/system/solr.service
. Вы не можете использовать символическую ссылку в этом каталоге, не пытайтесь .
Когда он окажется там, вы можете включить демон при загрузке с помощью:
sudo systemctl enable solr
И вы можете запускать, останавливать, статус с помощью:
sudo systemctl {start|stop|status} solr
3. Создание systemd
журналов постоянных
По умолчанию журналы systemd
не являются постоянными и теряются при перезагрузке системы. Если это не то, что вам нужно, вы можете сделать их постоянными, создав каталог:
sudo mkdir -p /var/log/journal/
А затем перезапустите демон ведения журнала systemd
:
sudo systemctl restart systemd-journald
Когда все будет готово, демон ведения журнала systemd
получит все stdout и stderr, созданные Solr, и будет сохранен в двоичном формате в /var/log/journal/
.
Способ ведения журналов systemd
довольно изящен, и его стоит изучить, если вы с ним не знакомы. А пока просто знайте, что для чтения ваших записей в журнале вам понадобится новый инструмент под названием journalctl
. Например, это будет следовать вашим журналам solr:
journalctl -u solr -f
И есть также флаги для фильтрации по дате и тому подобное.
3.1 Настройка файлов журнала
Бонусный раздел! Если вы хотите настроить файлы журналов, вы можете прочитать все об этом в документации здесь , но значения по умолчанию на самом деле очень безопасны и нормальны (журналы сжимаются по умолчанию, не могут быть слишком большими, скорость ограничена, и записываются на диск партиями).