OSX 터미널에서 아파치 상태를 표시하는 방법은 무엇입니까?


11

내가 그것을 조금 있지만 도움이 피드백과 같은 내게 제공 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에 익숙하지 않지만 init 스크립트를 편집하여 echo줄 을 추가 할 수 있습니다 .
— quanta

그 스크립트는 어디에 있습니까? 어떤 라인에 추가 echo해야합니까? 죄송합니다, 주변에 새로운 정보가 필요합니다 : \
— mgPePe

나는 OS X 녀석은 아니지만 아마도 "뉴스는 좋은 소식이 없다"라는 유닉스 철학을 따르고 뭔가 잘못되었을 때만 당신을 잔소리하기 시작합니까?
— Janne Pikkarainen

흠 침묵 오류는 도움이되지 않습니다, 그래서 나는 정말 팬이 아닙니다
— mgPePe

의 내용을 게시하십시오 /usr/sbin/apachectl.
— quanta

답변:


5

apachectl wrapper 스크립트에서 마지막에 이와 같은 것을 고수하는 것은 어떻습니까?

tail -5 /var/log/httpd/error_log

정상적인 시작에서 이와 같은 것을 볼 수 있습니다

  • [4 월 22 일 금요일 23:39:20] [알림] 다이제스트 :
    다이제스트 인증을 위한 비밀 생성 ...
  • [2011 년 4 월 22 일 금요일 23:39:20] [알림] 다이제스트 : 완료
  • [2011 년 4 월 22 일 금요일 23:39:20] [경고] pid 파일
    /mlk/apache/pid/httpd.pid 덮어 쓰기-이전 Apache 실행이 부정확하게 종료 되었습니까?
  • [2011 년 4 월 22 일 금요일 23:39:20] [알림] 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

스크립트로 수행 한 작업, 중지 시작, 다시 시작에 관계없이 마지막 몇 줄이 인쇄됩니다. 케이스 선언문의 시작 부분에만 배치 할 수 있습니다.


가능한 해결책 인 것 같습니다. 그리고 각 재시작 명령으로 자동 실행되도록 어떻게 첨부 할 수 있습니까?
— mgPePe

/ usr / bin / apachectl을 보려면 집에서 macos 서버로 ssh해야했습니다. 위의 답변을 살펴보십시오. 파일을 편집하는 명령을 추가했습니다.
— Michael Henry

30

내 Mac에서도 같은 문제가 있습니다. 아파치를 시작하려고 할 때 아무 일도 일어나지 않으면 즉시이 명령을 실행합니다. 필자의 경우 문제는 항상 아파치 구성 파일에있는 것 같습니다.

apachectl configtest

고마워 나는이 문제를 직접 겪고 있었고, homebrew SQLite에 대한 업데이트로 인해 homebrew PHP가 configtest를 제외하고는 어디에도 나타나지 않는 Apache 오류가 발생했습니다.
— AlexMax

감사합니다 감사합니다 !!! 이것은 단지 나의 정신을 구했다 !!!
— 그리고 마지막으로

1
이 명령의 짧은 버전은apachectl -t
— equiman

이 명령은 Apache httpd 구성 (httpd.conf)에 구문 오류가 없는지 알려줍니다. 프로세스가 실행 중인지 확인하려면 "htop"을 실행 한 다음 F4를 실행하여 "httpd"를 필터링하여 httpd가 생성 한 모든 프로세스를 볼 수 있습니다.
— 푸네 람바

8

apachectlMac에서 일부 launchctl명령을 감싸는 래퍼입니다 (파일을 살펴보십시오). 불행히도, launchctl은 starting에 문제가있을 때 오류 코드와 함께 종료되지 않으므로 httpd스크립트는 시도하더라도 오류를 표시하는 쉬운 방법이 없습니다.

스스로 수행 할 수있는 기본 점검은 apachectl start명령 후 Apache 프로세스의 존재를 점검하는 것입니다 .

ps aux | grep httpd

어떤 식으로, 당신은 "macosx에 설정할 수있는 디버그 정보가 없지만 이것이 아파치 서버가 실행 중인지 확인할 수있는 방법"이라고 말하는 것입니다.
— mgPePe

그렇습니다.
— Sven

0

netstat명령이있는 macOS에서 모든 네트워크 연결을 표시합니다. '듣기'연결 만 필터링하고 http (s) 서버를 볼 수 있습니다.

이 코드로 bash 파일을 만들 수 있습니다 :

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.