OSX làm thế nào để hiển thị trạng thái apache trong thiết bị đầu cuối?


11

Tôi nhận thấy rằng trên máy chủ linux của tôi khi tôi gõ apachectl, nó cung cấp cho tôi những phản hồi nhỏ nhưng hữu ích như restartingvà sau đó [ok]hoặc [fail]ở cuối dòng. Không nhiều, nhưng ít nhất tôi biết những gì đang xảy ra, và tôi có thể kiểm tra nhật ký.

Trên OS X của tôi, tôi không nhận được gì. chỉ dòng tiếp theo ngay lập tức:

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

Làm cách nào tôi có thể kích hoạt các tính năng 'gỡ lỗi' đó?


Tôi không quen thuộc với OS X, nhưng bạn có thể chỉnh sửa tập lệnh init để thêm một echodòng.
lượng tử

kịch bản đó ở đâu và tôi nên thêm dòng echonào? Xin lỗi, tôi là người mới và cần thông tin chi tiết: \
mgPePe

Tôi không phải là một anh chàng OS X, nhưng có lẽ nó chỉ tuân theo triết lý Unix "không có tin nào là tin tốt" và bắt đầu cằn nhằn bạn nếu có gì đó không đúng?
Janne Pikkarainen

Lỗi im lặng không giúp được gì, vì vậy tôi thực sự không phải là một người hâm mộ
mgPePe

Xin vui lòng gửi nội dung của /usr/sbin/apachectl.
lượng tử

Câu trả lời:


5

Làm thế nào về kịch bản trình bao bọc apachectl bạn dán một cái gì đó như thế này vào cuối.

tail -5 /var/log/httpd/error_log

bạn sẽ thấy một cái gì đó như thế này trong một khởi động bình thường

  • [Thứ Sáu 22 tháng 4 23:39:20 2011] [thông báo] Digest: tạo bí mật để
    xác thực digest ...
  • [Thứ Sáu 22 tháng 4 23:39:20 2011] [thông báo] Digest: xong
  • [Thứ Sáu, ngày 22 tháng 4 23:39:20 2011] [cảnh báo] tệp pid
    /mlk/apache/pid/httpd.pid bị ghi đè - Tắt máy trong quá trình chạy Apache trước đó?
  • [Thứ Sáu 22 tháng 4 23:39:20 2011] [thông báo] Apache / 2.0.63 (Unix) DAV / 2 được định cấu hình - tiếp tục các hoạt động bình thường

Nếu không, bất kỳ lỗi nào ít nhất một phần sẽ được hiển thị ở đây. Các cụm từ chính được hilight ở trên.

Bổ sung: / usr / sbin / apachectl được sở hữu bởi root, bạn phải là người dùng đặc quyền để làm điều này. sudo vi / usr / sbin / apachectl

di chuyển đến cuối tập tin và chèn đoạn này vào giữa dòng "esac" và "exit $ ERROR". I E.

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

Lưu ý điều này sẽ in ra một vài dòng cuối cùng bất kể bạn thực hiện hành động nào với tập lệnh, dừng bắt đầu, khởi động lại. bạn có thể chỉ muốn đặt nó trong phần bắt đầu của tuyên bố trường hợp.


Nghe có vẻ như một giải pháp có thể. Và làm thế nào tôi có thể đính kèm nó để nó tự động thực thi với mỗi lệnh khởi động lại?
mgPePe

Phải ssh vào máy chủ macos của tôi ở nhà để xem / usr / bin / apachectl Hãy xem câu trả lời ở trên tôi đã thêm các lệnh để chỉnh sửa tệp.
Michael Henry

30

Tôi có cùng một vấn đề trên máy Mac của tôi. Khi tôi cố gắng bắt đầu apache và không có gì xảy ra, tôi lập tức chạy lệnh này. Trong trường hợp của tôi, vấn đề dường như luôn nằm trong các tập tin cấu hình apache.

apachectl configtest

Cám ơn vì cái này. Tôi đã tự mình xử lý vấn đề này và hóa ra một bản cập nhật cho SQLite homebrew đã khiến PHP homebrew gây ra lỗi Apache không xuất hiện ở bất cứ đâu ngoại trừ trong configtest.
AlexMax

Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn!!! Điều này vừa tiết kiệm sự tỉnh táo của tôi !!!
Và cuối cùng là

1
phiên bản ngắn của lệnh này làapachectl -t
Equiman

Lệnh này sẽ cho bạn biết nếu cấu hình httpd của Apache (httpd.conf) không có lỗi cú pháp. Để xem liệu quy trình có đang chạy hay không, bạn có thể chạy "htop" và sau đó F4 để lọc trên "httpd" để xem tất cả các quy trình được sinh ra bởi httpd.
Puneet Lamba

8

apachectltrên Mac là một trình bao bọc xung quanh một số launchctllệnh (chỉ cần nhìn vào tệp). Thật không may, launchctl không thoát với mã lỗi khi bắt đầu xảy ra lỗi httpd, vì vậy tập lệnh không có cách nào dễ dàng để hiển thị bất cứ thứ gì, ngay cả khi nó cố gắng.

Một kiểm tra cơ bản mà bạn có thể tự thực hiện là kiểm tra sự tồn tại của các quy trình Apache sau apachectl startlệnh.

ps aux | grep httpd

theo một cách nào đó, bạn đang nói, "không có thông tin gỡ lỗi nào bạn có thể thiết lập trên macosx, nhưng đây là cách bạn có thể kiểm tra xem máy chủ apache có đang chạy không" đúng không?
mgPePe

Vâng, đó là về nó.
Sven

0

Trên macOS với netstatlệnh hiển thị tất cả các kết nối mạng. Bạn chỉ có thể lọc các kết nối 'nghe' và xem các máy chủ http (s).

Bạn có thể tạo một tệp bash với mã này:

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

Kết quả khi máy chủ bị dừng sudo apachectl -k stopsẽ là:

Apache server is not running

Kết quả khi máy chủ đang chạy sudo apachectl -k stopsẽ là:

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

Trong ví dụ này tôi có hai máy chủ đang chạy, một máy chủ https và một máy chủ khác có http.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.