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), яку ви можете вручну змінити в будь-який час.

EDIT

Якщо ви дійсно хочете скористатися service, є деякі інші варіанти.

Ваш сценарій повинен підтримувати принаймні startта stop. Але ви також можете реалізувати debugкоманду. І розпочніть свою програму з:

service foo debug

Іншим способом буде перевірка другого аргументу у вашому сценарії, і ви запускаєте свою програму з:

service foo start debug

Змініть свій сценарій init таким чином:

case "$1" in
  start)
        if [ "$2" = "debug" ]
        then
                start_debug
        else
                start
        fi
        ;;

1
Що стосується експортованого середовища vars, то, здається, це не так - на сторінці служби служби йдеться про те, що TERM та LANG - це єдині, які передаються до сценарію. Але звичайно, завжди можна обійти службу, запустивши /etc/init.d/MyNiftyService, запустити what1 what2 ...
Форма життя інопланетян

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

5

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

/etc/default/<service_name>

2
Правильно, але я не хочу змінювати це щоразу, коли мені потрібні зміни ... Під час розвитку це досить часто. І мені потрібен RHEL 6. Відредагував питання.
Ондра Жижка

0

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

Мені не подобається додавати додаткові параметри до запуску служби.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.