OSX วิธีการแสดงสถานะ Apache ใน terminal?


11

ฉันสังเกตเห็นว่าบนเซิร์ฟเวอร์ linux ของฉันเมื่อฉันพิมพ์ apachectl รีสตาร์ทมันให้ข้อเสนอแนะเล็ก ๆ น้อย ๆ แต่เป็นประโยชน์เช่นrestartingและ[ok]หรือ[fail]ในตอนท้าย ไม่มาก แต่อย่างน้อยฉันก็รู้ว่าเกิดอะไรขึ้นและฉันสามารถตรวจสอบบันทึกได้

ใน OS X ของฉันฉันไม่ได้รับอะไรเลย เพียงบรรทัดถัดไปทันที:

sh-3.2# /usr/sbin/apachectl stop   
sh-3.2# /usr/sbin/apachectl start
sh-3.2# 

ฉันจะเปิดใช้งานคุณสมบัติ 'แก้ไขข้อบกพร่อง' เหล่านั้นได้อย่างไร


ฉันไม่คุ้นเคยกับ OS X แต่คุณสามารถแก้ไขสคริปต์เริ่มต้นเพื่อเพิ่มechoบรรทัดได้
quanta

สคริปต์นั้นอยู่ที่ไหน ฉันควรเพิ่มบรรทัดechoอะไร ขออภัยฉันยังใหม่อยู่และต้องการรายละเอียด: \
mgPePe

ฉันไม่ได้เป็นคน OS X แต่บางทีมันอาจเป็นไปตามปรัชญา Unix ของ "ไม่มีข่าวเป็นข่าวที่ดี" และเริ่มที่จะจู้จี้คุณเฉพาะในกรณีที่มีอะไรผิดปกติ?
Janne Pikkarainen

ข้อผิดพลาดเงียบ hmm ไม่ช่วยดังนั้นฉันไม่ใช่แฟนจริงๆ
mgPePe

/usr/sbin/apachectlกรุณาโพสต์เนื้อหาของ
quanta

คำตอบ:


5

ในที่สุดสคริปต์ apachectl wrapper คุณติดอะไรแบบนี้ในตอนท้าย

tail -5 /var/log/httpd/error_log

คุณควรเห็นสิ่งนี้ในการเริ่มต้นปกติ

  • [ศุกร์ 22 เมษายน 23:39:20 2011] [ประกาศ] สรุป: สร้างความลับสำหรับการ
    ตรวจสอบย่อย ...
  • [ศุกร์ 22 เมษายน 23:39:20 2011] [ประกาศ] สรุป: เสร็จแล้ว
  • [ศุกร์ 22 เมษายน 23:39:20 2011] [เตือน] ไฟล์ pid
    /mlk/apache/pid/httpd.pid ถูกเขียนทับ - การปิด Apache ที่ไม่สะอาดก่อนหน้านี้ทำงานหรือไม่
  • [ศุกร์ 22 เมษายน 23:39:20 2011] [ประกาศ] Apache / 2.0.63 (Unix) DAV / 2 กำหนดค่า - กลับมาดำเนินการตามปกติ

มิฉะนั้นจะแสดงข้อผิดพลาดอย่างน้อยในส่วนที่นี่ วลีที่สำคัญคือดังกล่าวข้างต้น

เพิ่มเติม: / usr / sbin / apachectl เป็นเจ้าของโดย root คุณต้องเป็นผู้ใช้ที่มีสิทธิ์เพื่อทำสิ่งนี้ sudo vi / usr / sbin / apachectl

ย้ายไปยังจุดสิ้นสุดของไฟล์และแทรกระหว่างบรรทัด "esac" และ "exit $ ERROR" กล่าวคือ

esac
sleep 2; tail -5 /var/log/httpd/error_log
exit $ERROR

หมายเหตุสิ่งนี้จะพิมพ์ออกมาสองสามบรรทัดสุดท้ายไม่ว่าคุณจะทำอะไรกับสคริปต์หยุดเริ่มรีสตาร์ท คุณอาจต้องการวางไว้ในส่วนเริ่มต้นของคำสั่ง case เท่านั้น


นั่นฟังดูเหมือนทางออกที่เป็นไปได้ และฉันจะแนบมันอย่างไรเพื่อที่จะดำเนินการโดยอัตโนมัติพร้อมกับคำสั่งรีสตาร์ทแต่ละครั้ง
mgPePe

ต้อง ssh ลงในเซิร์ฟเวอร์ macos ที่บ้านเพื่อดู / usr / bin / apachectl ดูคำตอบข้างต้นฉันได้เพิ่มคำสั่งเพื่อแก้ไขไฟล์
Michael Henry

30

ฉันมีปัญหาเดียวกันบน mac ของฉัน เมื่อฉันพยายามเริ่ม apache และไม่มีอะไรเกิดขึ้นฉันจะรันคำสั่งนี้ทันที ในกรณีของฉันปัญหามักจะอยู่ในไฟล์การตั้งค่า apache

apachectl configtest

ขอบคุณสำหรับสิ่งนี้. ฉันพบปัญหานี้ด้วยตัวเองและปรากฎว่าการอัปเดตของ homebrew SQLite ทำให้ PHP homebrew เกิดข้อผิดพลาด Apache ที่ไม่ปรากฏขึ้นที่ใดยกเว้นการตั้งค่า
AlexMax

ขอบคุณขอบคุณขอบคุณ!!! นี่เพิ่งช่วยสติของฉัน !!!
และสุดท้าย

1
เวอร์ชันย่อของคำสั่งนี้คือapachectl -t
equiman

คำสั่งนี้จะบอกคุณว่า Apache httpd configuration (httpd.conf) ไม่มีข้อผิดพลาดทางไวยากรณ์หรือไม่ หากต้องการดูว่ากระบวนการทำงานอยู่หรือไม่คุณสามารถเรียกใช้ "htop" แล้วกด F4 เพื่อกรอง "httpd" เพื่อดูกระบวนการทั้งหมดที่เกิดจาก httpd
Puneet Lamba

8

apachectlบน Mac เป็น wrapper รอบlaunchctlคำสั่งบางอย่าง(เพียงแค่มองเข้าไปในไฟล์) น่าเสียดายที่ launchctl จะไม่ออกโดยมีรหัสข้อผิดพลาดเมื่อมีบางอย่างผิดปกติในการเริ่มต้นhttpdดังนั้นสคริปต์จึงไม่มีวิธีที่ง่ายในการแสดงอะไรแม้ว่าจะพยายาม

การตรวจสอบขั้นพื้นฐานที่คุณสามารถทำได้ด้วยตนเองคือการตรวจสอบการมีอยู่ของกระบวนการ Apache หลังจาก apachectl startคำสั่ง

ps aux | grep httpd

ในทางที่คุณกำลังพูดว่า "ไม่มีข้อมูลการแก้ปัญหาดังกล่าวคุณสามารถตั้งค่าบน macosx แต่นี่เป็นวิธีที่คุณสามารถตรวจสอบว่าเซิร์ฟเวอร์ apache ทำงานอยู่" ใช่ไหม?
mgPePe

ใช่มันเกี่ยวกับมัน
สเวน

0

บน macOS พร้อมnetstatคำสั่งแสดงการเชื่อมต่อเครือข่ายทั้งหมด คุณสามารถกรองการเชื่อมต่อ 'ฟัง' เท่านั้นและดูเซิร์ฟเวอร์ http (s)

คุณสามารถสร้างไฟล์ทุบตีด้วยรหัสนี้:

status="$(netstat -at | grep LISTEN | grep *.http)"
count="$(echo "${status}" | grep -Ev "^$" | wc -l)"

if [ ${count} -eq 0 ] ; then
    echo " Apache server is not running"
fi   

echo "${status}" | 
while IFS= read -r line
do
    echo " ${line}"
done

ผลลัพธ์เมื่อเซิร์ฟเวอร์sudo apachectl -k stopหยุดทำงานจะเป็น:

Apache server is not running

ผลลัพธ์เมื่อเซิร์ฟเวอร์กำลังทำงานsudo apachectl -k stopจะ:

tcp46      0      0  *.https                *.*                    LISTEN     
tcp46      0      0  *.http                 *.*                    LISTEN     

ในตัวอย่างนี้ฉันมีเซิร์ฟเวอร์สองเครื่องที่ทำงานหนึ่งที่มี https และอีกเซิร์ฟเวอร์หนึ่งที่มี http

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.