apache2ctl“ -k”フラグとは何ですか?


10

私は1時間探していて、それを使用する100の例を見つけましたが、それが何をするのかの説明はありません。私はチェックしましたman apache2ctl; kフラグについても説明していません(例では使用していますが)。

回答:


8

ええ、それは説明に少し埋もれています

パススルーモードでapachectl動作する場合、httpdバイナリで使用可能なすべての引数を使用できます。

apachectl [ httpd-argument ]

それでは、httpドキュメントを見てみましょう。

-k start|restart|graceful|stop|graceful-stop

httpd開始、再起動、または停止するためのシグナル。

そのため-k <option>、を使用する場合、httpdこの引数が必要なに単純に渡されます。

あなたが使用していない場合は-kapache2ctl代わりに再び同じです、それは自分自身を処理するコマンドを探しますhttpdかかるだろう。


ソースコードを見ると、この動作が見られます。caseステートメントは、最初の引数が認識された内部コマンドの1つであるかどうかをチェックし、最後に(フォールバックとして)すべてが渡されhttpdます。

case $ARGV in
start)
  HTTPD ${APACHE_ARGUMENTS} -k $ARGV # <= note the -k here
  # ...
stop|graceful-stop)
  # ...
# ...
*)
    $HTTPD ${APACHE_ARGUMENTS} $ARGV
    ERROR=$?
esac

私はこれが初めてです。kフラグの省略が実際に何をするのか、わかりやすい英語で説明してもらえますか?私のUbuntuサーバーでは、kフラグを使用しても使用しなくても違いはないようです。
BadHorsie

あなたが見ているものは正常です。前述したように、を使用しない場合-kapachectlコマンド自体を処理しますが、と同じhttpdです。を使用する-kと、コマンドはそのまま渡されhttpdます。
slhck

正直言って、機能の面でそれが何を意味するのかはまだよくわかりませんが、-kフラグを使用してもしなくても、ラウンドアバウトで同じことをするということですか? ?
BadHorsie

1
そうです、そうです。両方とも機能するのは歴史的な理由によるものです。
slhck

2

追加して編集:申し訳ありませんが、shlckは私よりも速く入力できます:D

「apache2ctl」は、実際には「httpd」実行可能ファイルの単なるフロントエンドであり、SysV initスクリプト可能にするか、httpd実行可能ファイルにパススルーオプションを渡すかによって、2つのモードで実行されます。-kは実際にはhttpdに渡されます。

http://httpd.apache.org/docs/2.2/programs/apachectl.html

パススルーモードで動作している場合、apachectlはhttpdバイナリで使用可能なすべての引数を取ることができます。

apachectl [httpd-argument]

そのため、httpdのmanページからhttp://httpd.apache.org/docs/2.2/programs/httpd.html

-k start | restart | graceful | stop | graceful-stop httpdに起動、再起動、または停止を通知します。

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