ธง apache2ctl“ -k” คืออะไร?


11

ฉันค้นหามาหนึ่งชั่วโมงแล้วและพบตัวอย่างนับร้อยที่ใช้งาน แต่ไม่มีคำอธิบายว่ามันทำอะไร ฉันตรวจสอบman apache2ctlแล้ว มันไม่ได้อธิบายแฟล็ก k เช่นกัน (แม้ว่าจะใช้ในตัวอย่าง)

คำตอบ:


8

ใช่มันฝังอยู่เล็กน้อยในคำอธิบาย :

เมื่อดำเนินการในโหมดส่งผ่านapachectlสามารถรับอาร์กิวเมนต์ทั้งหมดที่มีสำหรับhttpdไบนารี

apachectl [ httpd-argument ]

ดังนั้นเรามาดูhttpเอกสารของแล้ว:

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

สัญญาณที่httpdจะเริ่มรีสตาร์ทหรือหยุด

ดังนั้นถ้าคุณใช้-k <option>คุณจะส่งต่อไปhttpdซึ่งต้องการอาร์กิวเมนต์นี้

หากคุณไม่ได้ใช้-k, apache2ctlแทนจะมองหาคำสั่งว่าจะจัดการกับตัวเองซึ่งเป็นอีกครั้งเช่นเดียวกับhttpdจะใช้เวลา


มองไปที่รหัสที่มาแสดงพฤติกรรมนี้ที่caseตรวจสอบคำสั่งว่าอาร์กิวเมนต์แรกคือหนึ่งในคำสั่งภายในได้รับการยอมรับและในที่สุด (เป็นทางเลือก) 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

สิ่งที่คุณเห็นเป็นเรื่องปกติ เหมือนที่ผมกล่าวว่าถ้าคุณไม่ได้ใช้-kแล้วapachectlจะจัดการกับคำสั่งของตัวเอง httpdแต่มันก็ไม่เป็นเช่นเดียวกับ หากคุณใช้-kคำสั่งจะถูกส่งต่อไปhttpdตามที่เป็นอยู่
slhck

ฉันยังไม่รู้จริงๆว่ามันหมายถึงอะไรในแง่ของฟังก์ชั่นพูดตามตรง แต่คุณกำลังพูดแล้วว่ามันไม่สำคัญว่าคุณจะใช้แฟล็ก -k หรือไม่มันจะทำแบบเดียวกันในทางอ้อม ?
BadHorsie

1
นั่นคือสิ่งที่ฉันพูดใช่ มันเป็นเพราะเหตุผลทางประวัติศาสตร์ที่ทั้งสองทำงาน
slhck

"ฝังน้อย"? ทำไมไม่เรียกสิ่งนี้ - เอกสาร apache แย่มาก ๆ ฉันไม่คิดว่านี่เป็นเหตุผลทางประวัติศาสตร์เพราะเหตุผลในการส่งผ่านข้อโต้แย้งอื่น ๆ ไปยัง httpd
Palo

2

แก้ไขเพื่อเพิ่ม: ขออภัยประเภท slhck เร็วกว่าฉัน: D

'apache2ctl' เป็นเพียง front-end สำหรับปฏิบัติการ 'httpd' และทำงานในสองโหมดขึ้นอยู่กับว่าคุณต้องการให้มันเป็น SysV init scriptable หรือถ้าคุณต้องการที่จะส่งผ่านตัวเลือกไปยัง httpd executable จริง ๆ -k จะถูกส่งผ่านไปยัง httpd

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

เมื่อดำเนินการในโหมดส่งผ่าน apachectl สามารถรับอาร์กิวเมนต์ทั้งหมดที่มีสำหรับ httpd binary

apachectl [httpd- อาร์กิวเมนต์]

ดังนั้นจากหน้า 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.