Linux:(service foo start`(コマンドラインで)にパラメーターを渡す方法?


11

開始するサービスに引数を渡したいのですが。たとえば、デバッグモードでサーバーを起動します。お気に入り、

service jboss-as start debug

またはそのような。しかし、serviceそれをサポートしていないようです。

何か方法はありますか?(それが重要な場合はRHEL 6の場合。)

注:これはUbuntu / Linuxに似ています。起動スクリプト(sysvinit)の起動パラメーターは通常どのように定義されていますか?同じではありません。


ubuntuはsysvを使用せず、upstartを使用します。
PersianGulf 2013年

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

もう1つの方法は、スクリプトの2番目の引数を確認し、プログラムを次のように開始することです。

service foo start debug

initスクリプトを次のように変更します。

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

1
エクスポートされた環境変数については、そうではないようです-サービスのmanページには、TERMとLANGだけがスクリプトに渡されると記載されています。しかしもちろん、/ etc / init.d / MyNiftyServiceを実行することで、いつでもサービスをバイパスすることができます。startwhat1 what2 ...
Alien Life Form

エイリアンのバイパスに頼ります。それを答えにしたいですか?
OndraŽižka2013年

5

Ubuntuでは、起動パラメータは通常次の場所にあります。

/etc/default/<service_name>

2
そうですが、変更が必要になるたびに変更したくありません...開発中はかなり頻繁です。RHEL 6が必要です。質問を編集しました。
OndraŽižka

0

上記で提案したように、その存在を確認した後、システム固有のファイルから追加のパラメーターを調達します。

サービスのスタートアップにオプションを追加するのは好きではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.