A maioria das pessoas executa seu httpd (Apache, Nginx, etc) através de um sistema init. Isso é quase certamente o caso se você tiver instalado a partir de um pacote. Quase todos esses sistemas de inicialização têm um método funcionando se estiverem em execução. No meu caso, estou usando o nginx, que envia um script de inicialização no estilo SysV e aceita um argumento status
, assim:
$ /etc/init.d/nginx status
* nginx is running
Obviamente, se você estiver executando um httpd, script ou sistema init diferente, você terá uma sintaxe ligeiramente diferente, mas a menos que esteja iniciando manualmente o httpd você mesmo (o que parece ser a pior idéia do mundo), provavelmente você está usando um script de inicialização agradável e gerenciado que permitirá consultar o status.
a resposta do slm tem mais sobre esse tipo de consulta do init, mas o problema de confiar nisso é que isso realmente diz você se um processo ainda estiver em execução. O processo principal do seu httpd poderia estar rodando, mas de algum modo travado. Faz muito sentido pular simples testes de inicialização e passar para testes comportamentais.
Uma coisa que sabemos sobre o httpds é que eles ouvem. Geralmente na porta *:80
, mas se a sua não, você pode adaptar o código a seguir. Aqui estou apenas awk
ing a saída de netstat
para ver se está escutando na porta certa.
$ 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
Também podemos verificar o qual processo está sendo executado para garantir que o direito httpd esteja em execução. Nós poderíamos fazer todo tipo de checagem. Depende o quão paranoico você quer ser:)
Mas mesmo isso é apenas um reflexo de um httpd. Quer realmente testar isso? Bem, vamos testar .
$ wget --spider -S "http://localhost" 2>&1 | awk '/HTTP\// {print $2}'
200
Estou apenas olhando para o código de resposta (200 significa "A-Okay!"), mas, novamente, podemos investigar e testar a saída para garantir que ela esteja sendo gerada corretamente.
Mas mesmo isso não é tão completo. Você está verificando localhost
e está relatando 200, nada está errado? E se os castores mastigassem o cabo de rede que abastece o httpd (mas não o resto do sistema)? Então o que?! Você está reportando tempo de atividade quando está realmente baixo. Poucas coisas parecem mais não profissionais do que dados de status incorretos.
Então vamos falar com um servidor externo (idealmente em uma conexão completamente diferente, em outra galáxia longe, longe) e pedir para consultar nosso servidor:
$ ssh tank 'wget --spider -S "http://bert" 2>&1' | awk '/HTTP\// {print $2}'
200
A essa altura, quaisquer problemas relatados são problemas no aplicativo (que podem ter seu próprio tratamento de erros e / ou denúncia, ou estão no final do cliente).
Uma combinação desses testes pode ajudar a determinar onde o problema está.