Я хочу передать аргумент запускаемой мной службе. Например. запуск сервера в режиме отладки. Подобно,
service jboss-as start debug
Или такой. Но service
похоже, не поддерживает это.
Есть какой-нибудь способ? (Для RHEL 6, если это имеет значение.)
Примечание: это похоже на Ubuntu / Linux: как обычно определяются параметры запуска для сценариев запуска (sysvinit)? но не то же самое.
В RHEL у вас есть папка / etc / sysconfig. Здесь вы определяете параметры запуска. И в свой сценарий запуска вы включаете что-то вроде:
if [ -f /etc/sysconfig/$prog ] ; then
. /etc/sysconfig/$prog
fi
Посмотрите существующие сервисы на примерах.
Для разработки вы можете поместить свои параметры запуска в экспортированную переменную (например, в .bashrc), которую вы можете вручную переопределить в любое время.
РЕДАКТИРОВАТЬ
Если вы действительно хотите использовать service
есть еще несколько вариантов.
Ваш скрипт должен поддерживать как минимум start
и stop
. Но вы также можете реализовать debug
команда. И начните свою программу с:
service foo debug
Другой способ - проверить второй аргумент в вашем скрипте, и вы запустите свою программу с:
service foo start debug
Измените свой сценарий инициализации примерно так:
case "$1" in
start)
if [ "$2" = "debug" ]
then
start_debug
else
start
fi
;;
В Ubuntu параметры запуска обычно находятся в:
/etc/default/<service_name>
Я бы выбрал дополнительные параметры из файла, специфичного для системы, после проверки его существования, как было предложено выше.
Не люблю добавлять дополнительные опции в автозагрузку сервиса.
Вы можете настроить EnvironmentFile
в вашем служебном файле:
[Service]
EnvironmentFile=/etc/sysconfig/my-service
ExecStart=my-service.sh ${ARG1} ${ARG2}
и создать /etc/sysconfig/my-service
с варами:
ARG1=first
ARG2=second