在Linux中获取网站的状态码

3

我有一个小的VPS,用来托管我开发的Web应用程序,现在开始接收大量访问。

我需要每隔X分钟检查/验证网站是否正常运行(检查状态码200)或者是否宕机(状态码500),如果宕机,则运行我编写的脚本来重新启动一些服务。

在Linux中如何进行检查呢?使用Curl、Lynx还是其他方式?


这更适合于Serverfault,但是看一下这里 - 他们有一个免费计划。 - josh3736
谢谢@josh3736,但我需要捕获结果,并根据结果做某事或其他事情。我已经发布了一个对我有用的答案。 - Alex
使用第三方监控服务是一个非常好的主意,这样你就可以在服务器宕机时收到警报。(我假设你的重启脚本正在VPS上运行。) - josh3736
是的,它正在VPS上运行。我同意第三方工具很有用,但它只会提醒我... 它不能解决问题。以后,我想我会实施Nagios。 - Alex
4个回答

2
curl --head --max-time 10 -s -o /dev/null \
    -w "%{http_code} %{time_total} %{url_effective}\n" \
    http://localhost

在10秒后超时,并报告响应代码和时间

如果请求超时(检查$?),Curl将以错误代码28退出


是的,curl 就是解决方案。 - Alex

1

这会返回页面的内容...而不是状态!无论如何,谢谢。 - Alex

1
对于这样的问题,工具的man页面通常提供了所有可能选项的很好列表。
对于curl,您也可以在这里找到它。
您似乎要搜索的选项是-whttp-code variable
编辑:
请参阅@Ken的答案以了解如何使用-w

是的,我决定使用 curl - Alex

-1

好的,我创建了两个脚本:

  1. site-statush.sh http://yoursite.com => 用于检查网站状态,如果是200,则不做任何操作,否则调用services-action.sh restart
  2. services-action.sh restart => 用于重启$services中指定的所有服务

请访问https://gist.github.com/2421072查看。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接