RHEL init.d機能はどのように成功しますか?

RHEL init.d機能はどのように成功しますか?

私はRHELの派生製品であるAmazon Linux AMIを使用しており、SysVintをservicesservicesfunctions/etc/init.d/functions私は理解できません。仕組みsuccessfailure機能(似たようなものもありますが、warning原則とコードは同じです。)

私のfunctionsスクリプトはここで発見関数successは次のとおりです。

# Log that something succeeded
success() {
  [ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_success
  return 0
}

echo_success() {
  [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
  echo -n "["
  [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
  echo -n $"  OK  "
  [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
  echo -n "]"
  echo -ne "\r"
  return 0
}

"${LSB:-}"正直なところ、この変数はどこにも見つからないので、この部分を理解していませんLSB。ただし、重要な部分はスクリプトが関数を使用する方法ですsuccess。たとえば、daemon関数の最後の行は次のようになります。

[ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"

$"$base startup"これに続くパラメータは確認されていないため、これは私には意味がありません。文字列が記録されているようですが、どのように記録されるかはわかりません。echoedsuccessecho

本当にバグがあると思います。それとも何か理解していないようです...関数の本質はsuccessカーソルと一緒に緑色のインラインを印刷することです。[ OK ]たとえば、私のtomcatスクリプトは[ OK ]カーソルの上に新しい行を印刷するのではなく、端末のカーソルに印刷します。これは本当に奇妙です。

変だと思った

テキストは次のようにする必要がありますtomcat is running... [ OK ]が、私のターミナルラインに印刷されるので、私のユーザー名とIPはほとんど切り捨てられます。

それでは、私が間違って理解しているのでしょうか、それともsuccessRHELサービスの機能がどこでも誤って使用されているのでしょうか?

答え1

あなたが間違っているわけではありませんが、これらの機能が使用されているとは言えません。間違って

"${LSB:-}"正直なところ、このLSB変数はどこにも見つからず、この部分は理解できません。

どこでも$ LSBセットが見つかりません。この変数がチェックされる理由は次のとおりです。

[ "$BOOTUP" != "verbose" -a -z "${LSB:-}" ] && echo_success

テスト結果はecho_successBOOTUP変数の値ですいいえ「Verbose」、LSB変数は次のようになります。いいえ置く。構文定義${varname:-text}は次のとおりです。

${parameter:-word} はデフォルト値を使用します。
引数が設定されていないか空の場合、単語の拡張が置き換えられます。それ以外の場合、パラメータ値は置き換えられます。

ここでダッシュの後には「単語」がないため、$ LSBが設定されていないかnullの場合、拡張結果全体が(なし)になり、テストに-z合格します。

私のもの推測するinitスクリプトの動作を変更したい場合はロジックがあります。いいえこれらの成功()または失敗()関数を実行してください。

第二に、

スクリプトが成功関数を使用する方法(デーモン関数の最後の行など)は次のとおりです。

[ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"

これらのパラメータは関数に渡されますが、使用されないという点で正確です。未使用のパラメータを渡すことは無害です。一貫性がないか混乱するだけです!私のもの推測するこれらの関数の以前のバージョンでは、渡された引数を見ましたか(おそらく文書化されていますか?)。

このinit_crypto()関数は成功()(または失敗())を呼び出すことに注意してください。いいえパラメータ!

関連情報