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
        ;;
Laurentiu Roescu
источник
1
Что касается экспортированных переменных среды, то это не так - на странице руководства службы говорится, что TERM и LANG - единственные, которые передаются в сценарий. Но, конечно, всегда можно обойти службу, запустив /etc/init.d/MyNiftyService и запусти что угодно1, что угодно2 ...
Alien Life Form
Я прибегну к обходу Чужого. Хотите поставить это как ответ?
Ондра Жижка
5

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

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

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

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

Амар
источник