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.