Apa yang dimaksud dengan flag "-k" apache2ctl?

11

Saya telah mencari selama satu jam dan telah menemukan ratusan contoh yang menggunakannya, tetapi tidak ada penjelasan tentang apa yang dilakukannya. Saya memang memeriksa man apache2ctl; itu juga tidak menjelaskan flag k (walaupun ia menggunakannya dalam contoh).

felwithe
sumber

Jawaban:

8

Ya, itu sedikit terkubur dalam deskripsi :

Ketika bertindak dalam mode pass-through, apachectldapat mengambil semua argumen yang tersedia untuk httpdbiner.

apachectl [ httpd-argument ]

Jadi mari kita lihat httpdokumentasi lalu:

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

Sinyal httpduntuk memulai, memulai kembali, atau berhenti.

Jadi, jika Anda menggunakan -k <option>, Anda hanya akan meneruskan httpd, yang membutuhkan argumen ini.

Jika Anda tidak menggunakan -k, apache2ctlalih-alih akan mencari perintah yang akan ditangani sendiri, yang lagi-lagi sama seperti yang httpdakan diambil.


Melihat kode sumber menunjukkan perilaku ini, di mana casepernyataan memeriksa apakah argumen pertama adalah salah satu perintah internal yang diakui, dan akhirnya (sebagai fallback), semuanya diteruskan httpd.

case $ARGV in
start)
  HTTPD ${APACHE_ARGUMENTS} -k $ARGV # <= note the -k here
  # ...
stop|graceful-stop)
  # ...
# ...
*)
    $HTTPD ${APACHE_ARGUMENTS} $ARGV
    ERROR=$?
esac
slhck
sumber
Saya baru dalam hal ini. Bisakah Anda jelaskan kepada saya dalam bahasa Inggris apa yang akan dilakukan dengan flag k? Di server Ubuntu saya sepertinya tidak ada bedanya jika saya menggunakan flag k atau tidak, itu selalu restart dengan sukses sejauh yang saya tahu.
BadHorsie
Apa yang Anda lihat adalah normal. Seperti yang saya katakan, jika Anda tidak menggunakan -k, maka apachectlakan menangani perintah itu sendiri, tetapi melakukan hal yang sama httpd. Jika Anda menggunakan -k, perintah diteruskan ke httpdapa adanya.
slhck
Saya masih tidak benar-benar tahu apa artinya itu dalam hal fungsionalitas, jujur, tetapi apakah Anda mengatakan bahwa tidak masalah jika Anda menggunakan flag -k atau tidak, itu akan melakukan hal yang sama secara tidak langsung. ?
BadHorsie
1
Itu yang saya katakan, ya. Karena alasan historis, keduanya berfungsi.
slhck
"sedikit terkubur"? Mengapa tidak menyebutnya - dokumentasi apache benar-benar menyebalkan. Saya tidak berpikir ini karena alasan historis, karena alasan untuk meneruskan juga argumen lain ke httpd.
Palo
2

Edit untuk menambahkan: Maaf, jenis slhck lebih cepat dari saya: D

'apache2ctl' sebenarnya hanya sebuah front-end untuk executable 'httpd' dan berjalan dalam dua mode tergantung pada apakah Anda ingin itu menjadi skrip init SysV atau jika Anda ingin meneruskan opsi-opsi ke executable httpd. -K sebenarnya akan diteruskan ke httpd.

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

Saat bertindak dalam mode pass-through, apachectl dapat mengambil semua argumen yang tersedia untuk biner httpd.

apachectl [httpd-argumen]

Jadi dari halaman manual httpd, http://httpd.apache.org/docs/2.2/programs/httpd.html

-k start | restart | anggun | berhenti | anggun-stop Sinyal httpd untuk memulai, memulai kembali, atau berhenti.

Dawn Benton
sumber