답변:
대부분의 사람들은 httpd (Apache, Nginx 등)를 init 시스템을 통해 실행합니다. 패키지에서 설치 한 경우가 거의 확실합니다. 이러한 init 시스템의 대부분은 실행중인 메소드 작업이 있습니다. 내 경우에는 SysV 스타일의 init 스크립트를 제공하고 status
인수 를 허용하는 nginx를 사용 하고 있습니다.
$ /etc/init.d/nginx status
* nginx is running
분명히 다른 httpd, script 또는 init 시스템을 실행하는 경우 약간 다른 구문을 사용하지만 수동으로 httpd를 직접 시작하지 않는 한 (세계에서 최악의 생각처럼) 상태를 쿼리 할 수있는 훌륭하고 관리되는 시작 스크립트를 사용하고있을 것입니다.
slm의 답변 에는 이러한 종류의 초기화 쿼리에 대한 자세한 내용이 있지만 신뢰하는 문제는 프로세스가 여전히 실행 중인지 여부 만 알려줍니다. httpd의 기본 프로세스 가 실행 중일 수 있지만 교착 상태가 발생할 수 있습니다. 간단한 초기화 테스트를 건너 뛰고 행동 테스트로 넘어가는 것이 합리적입니다.
우리가 httpds에 대해 알고있는 것은 그들이 듣는 것입니다. 일반적으로 port *:80
에 있지만 그렇지 않은 경우 코드 다음 코드를 조정할 수 있습니다. 여기 에 올바른 포트에서 수신 대기 중인지 확인하기 위해 awk
출력을 출력 netstat
하고 있습니다.
$ sudo netstat -ntlp | awk '$4=="0.0.0.0:80"'
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2079/nginx
또한 올바른 httpd가 실행 중인지 확인하기 위해 어떤 프로세스가 실행 중인지 확인할 수도 있습니다 . 우리는 모든 종류의 점검을 할 수 있습니다. 편집증이되고 싶은 방법에 따라 다릅니다 :)
그러나 그것조차도 httpd를 반영합니다. 실제로 테스트하고 싶습니까? 테스트 해보자 .
$ wget --spider -S "http://localhost" 2>&1 | awk '/HTTP\// {print $2}'
200
방금 응답 코드 (200은 "A-Okay!"를 의미 함)를보고 있지만 다시 출력을 파고 실제로 테스트하여 출력이 올바르게 생성되는지 확인할 수 있습니다.
그러나 이것조차 그렇게 철저하지는 않습니다. 확인 localhost
하고 200을보고합니다. 아무것도 없습니다. httpd를 제공하는 네트워크 케이블을 통해 비버가 씹어지면 (시스템의 나머지 부분은 제외) 어떻게해야합니까? 그리고 뭐?! 실제로 다운되었을 때 가동 시간을보고합니다. 잘못된 상태 데이터보다 비전문적 인 것으로 보이는 것은 거의 없습니다.
이제 외부 서버 (이상적으로는 다른 은하계에서 완전히 다른 연결로)와 대화하고 서버에 쿼리하도록 요청하십시오.
$ ssh tank 'wget --spider -S "http://bert" 2>&1' | awk '/HTTP\// {print $2}'
200
이 시점에서보고 된 문제는 인앱 문제 (자체 오류 처리 및보고가 있거나 클라이언트가 끝났을 수 있음)입니다.
이러한 테스트를 조합하면 문제가있는 위치를 정리하는 데 도움이 될 수 있습니다.
대부분의 Linux 배포판에서 보편적으로 services 명령을 사용할 수 있습니다.
$ service <service> status
$ service httpd status
httpd (pid 23569) is running...
이 명령을 개별적으로 실행하는 모든 서비스에 사용하거나 모든 서비스 상태를 찾을 수 있습니다.
$ service --status-all
python is stopped
automount (pid 22457) is running...
Avahi daemon is not running
Avahi DNS daemon is not running
crond (pid 23577) is running...
gpm is stopped
hald is stopped
httpd (pid 23569) is running...
...
보다 일반적인 서비스 관리 프레임 워크 중 하나를 사용하는 경우 다음 방법을 사용하여 각각의 서비스를 나열 할 수 있습니다.
SysVinit
$ ls -l /etc/init.d/ | head -10
total 220
-rwxr-xr-x 1 root root 1422 Jan 13 2009 ajaxterm
-rwxr-xr-x 1 root root 3052 Apr 20 2012 autofs
-rwxr-xr-x 1 root root 1877 Apr 13 2011 avahi-daemon
-rwxr-xr-x 1 root root 1824 Apr 13 2011 avahi-dnsconfd
-rwxr-xr-x 1 root root 1926 Feb 22 2012 crond
-rwxr-xr-x 1 root root 14291 Dec 19 2011 functions
-rwxr-xr-x 1 root root 1778 Jan 6 2007 gpm
-rwxr-xr-x 1 root root 1586 Mar 5 2011 haldaemon
-rwxr-xr-x 1 root root 5742 Dec 19 2011 halt
체계화
$ systemctl list-unit-files --type=service | head -10
UNIT FILE STATE
abrt-ccpp.service enabled
abrt-oops.service enabled
abrt-pstoreoops.service disabled
abrt-vmcore.service enabled
abrt-xorg.service enabled
abrtd.service enabled
accounts-daemon.service enabled
alsa-restore.service static
alsa-state.service static
건방진 녀석
$ initctl list | head -10
avahi-daemon start/running, process 1090
mountall-net stop/waiting
nmbd start/running, process 2045
passwd stop/waiting
rc stop/waiting
rsyslog start/running, process 1088
tty4 start/running, process 1211
udev start/running, process 483
upstart-udev-bridge start/running, process 480
ureadahead-other stop/waiting