Укажите свойства java / system во внешнем файле через Bash - PullRequest
0 голосов
/ 09 марта 2020

Я хотел знать, возможно ли поместить свойства system / java в текстовый файл и кое-что, как их прочитать и передать в команду запуска ниже. Это может быть любой скрипт запуска. Это только пример.

$SOLR_HOME/bin/solr start -Dsolr.default.confdir=$HOME/my-conf-dir -Dsolr.data.home=$HOME/my-data-dir

Этот стартовый скрипт будет вызываться из системного ctl, и я не хочу вводить опции -D жестко закодированными. Я хотел бы, чтобы они были в файле, которым я могу управлять.

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Предположим, у вас есть файл свойств solr.properties:

# this is a comment
solr.default.confdir=$HOME/my-conf-dir

# this is another comment
solr.data.home=$HOME/my-data-dir

solr.foo=$FOO

Тогда следующие команды

export FOO=bar
grep '^[^#][^=]*=' <(envsubst '$HOME $FOO' < solr.properties)

заменят переменную $HOME на домашний каталог и $FOO с bar в solr.properties и grep для всех строк, не начинающихся с комментария # и содержащих символ =.

Вторая команда расширена до

arr=( $(printf -- '-D%s\n' $(grep '^[^#][^=]*=' <(envsubst '$HOME $FOO' < solr.properties))) )

сохранит свойства, добавив -D в массив arr.

Полный сценарий запуска будет

#!/bin/bash

export FOO=bar
arr=( $(printf -- '-D%s\n' $(grep '^[^#][^=]*=' <(envsubst '$HOME $FOO' < solr.properties))) )
$SOLR_HOME/bin/solr start "${arr[@]}"
0 голосов
/ 09 марта 2020

Это должно быть задано приложением c в зависимости от вашей системы и приложения, поскольку вы не хотите, чтобы свойства одного приложения просачивались в другие приложения.

Для Solr это сохраняется в /etc/default/solr.in.sh, если вы использовали скрипт по умолчанию install_solr_service.sh.

Насколько я знаю, не существует общей поддержки использования файлов свойств непосредственно с JVM, и дело за приложениями поддержать его по мере необходимости.

...