ฉันค้นหามาหนึ่งชั่วโมงแล้วและพบตัวอย่างนับร้อยที่ใช้งาน แต่ไม่มีคำอธิบายว่ามันทำอะไร ฉันตรวจสอบman apache2ctl
แล้ว มันไม่ได้อธิบายแฟล็ก k เช่นกัน (แม้ว่าจะใช้ในตัวอย่าง)
ฉันค้นหามาหนึ่งชั่วโมงแล้วและพบตัวอย่างนับร้อยที่ใช้งาน แต่ไม่มีคำอธิบายว่ามันทำอะไร ฉันตรวจสอบman apache2ctl
แล้ว มันไม่ได้อธิบายแฟล็ก k เช่นกัน (แม้ว่าจะใช้ในตัวอย่าง)
คำตอบ:
ใช่มันฝังอยู่เล็กน้อยในคำอธิบาย :
เมื่อดำเนินการในโหมดส่งผ่าน
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
แล้วapachectl
จะจัดการกับคำสั่งของตัวเอง httpd
แต่มันก็ไม่เป็นเช่นเดียวกับ หากคุณใช้-k
คำสั่งจะถูกส่งต่อไปhttpd
ตามที่เป็นอยู่
แก้ไขเพื่อเพิ่ม: ขออภัยประเภท 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 เพื่อเริ่ม, รีสตาร์ทหรือหยุด