Linux: Как передать параметры в `service foo start` (из командной строки)?


11

Я хотел бы передать аргумент службе, которую я запускаю. Например, запуск сервера в режиме отладки. Подобно,

service jboss-as start debug

Или такой. Но, serviceпохоже, не поддерживает это.

Есть ли способ? (Для RHEL 6, если это имеет значение.)

Примечание. Это похоже на Ubuntu / Linux: как обычно определяются параметры запуска для сценариев запуска (sysvinit)? но не то же самое.


Стоп, Ubuntu не использует sysv, он использует upstart.
Персидский залив

1
Создайте еще один случай в скрипте запуска. Пример: start-debugи тогда вы можете запустить:/etc/init.d/jboss-as start-debug
Guntis

Ответы:


10

В 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
        ;;

1
Что касается экспортированных переменных среды, то это не так - на странице руководства службы говорится, что TERM и LANG - единственные, которые передаются в сценарий. Но, конечно, всегда можно обойти службу, запустив /etc/init.d/MyNiftyService и запусти что угодно1, что угодно2 ...
Alien Life Form

Я прибегну к обходу Чужого. Хотите поставить это как ответ?
Ондра Жижка

5

В Ubuntu параметры запуска обычно находятся в:

/etc/default/<service_name>

2
Правильно, но я не хочу менять это каждый раз, когда мне нужно изменение ... Во время разработки это довольно часто. И мне нужен RHEL 6. Отредактировал вопрос.
Ондра Жижка

0

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

Я не люблю добавлять какие-либо дополнительные опции при запуске сервиса.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.