檢查服務器健康情況的辦法有幾種web
1. 檢查進程是否存在shell
使用 ps 命令便可api
ps aux | grep xxxxbash
2. 檢查端口號服務器
netstat -antp | grep xxxxdom
可是有時服務器處理假死狀態,即進程存在同時也監聽了端口可是不處理任何消息。這裏能夠使用第三種方法。curl
3. 訪問web服務器的api,查看http狀態碼jsp
這裏使用 curl 命令, 不懂curl的能夠百度一下這裏不作詳細的解釋了。oop
curl -o /dev/null -s -w %{http_code} www.baidu.comurl
以上命令能夠取得http狀態碼。 返回200表示服務器可以正常處理請求,不然既是有問題。
下面利用shell腳本批量檢查服務器是否宕機或者假死,話很少說直接上代碼。
這裏有2個文件
watch.sh
#!/bin/bash for file in `cat domain.txt` do for loop in `seq 1 30` do rs=`curl -o /dev/null -s -w %{http_code} $file` echo "$file result -> $rs" urlresponse=${file}" -> "${rs} if [ $rs -eq 200 ]; then urlresponse=$urlresponse"\n" break else urlresponse=$urlresponse" error\n" fi sleep 2 done result=${result}${urlresponse} done echo -e "\n-------------------" echo -e $result
domain.txt
http://xxx.xxx.xxx.xxx:8080/xxx.jsp http://xxx.xxx.xxx.xxx:9080/xxx.jsp http://xxx.xxx.xxx.xxx:8080/xxx.jsp #http://xxx.xxx.xxx.xxx:8080/xxx.jsp #http://xxx.xxx.xxx.xxx:8080/xxx.jsp
watch.sh 讀取 domain.txt 中的地址,每一個地址每隔2秒請求一次循環30次。判斷 http_code 是否返回 200, 若是是的則檢查下一個地址。所有檢查完以後輸出彙總結果。如需增長鬚要檢查的服務器,在domain.txt 中添加便可。