案例五:shell指令碼實現定時監控http服務的執行狀態
注意:監控方法可以為埠、程式、URL模擬訪問方式,或者三種方法綜合。
說明:由於截止到目前僅講了if語句,因此,就請大家用if語句來實現。
[root@oldboy-B scripts]# cat apachemon #!/bin/sh #created by oldboy 20110523 . /etc/init.d/functions HTTPPRONUM=`ps -ef|grep http|grep -v grep|wc -l` #if [ $HTTPPRONUM -lt 1 ];then if [[ $HTTPPRONUM -lt 1 ]];then action “httpd is not running” /bin/false action “httpd is not running” /bin/false >/tmp/httpd.log httpdctl restart >/dev/null 2>&1 action “httpd is restart” /bin/true mail -s “`uname -n`’s httpd restarted at `(date)`” 31333741@qq.com exit 1 else action “httpd is running” /bin/true exit 0 fi
[root@oldboy-B scripts]# apachemon httpd is running [確定] [root@oldboy-B scripts]# pkill httpd [root@oldboy-B scripts]# ps -ef |grep http |grep -v grep [root@oldboy-B scripts]# apachemon httpd is not running [失敗] httpd is restart [確定] [root@oldboy-B scripts]# ps -ef|grep http|grep -v grep root 5845 1 1 15:59 ? 00:00:00 /usr/sbin/httpd -k restart apache 5852 5845 0 15:59 ? 00:00:00 /usr/sbin/httpd -k restart apache 5853 5845 0 15:59 ? 00:00:00 /usr/sbin/httpd -k restart apache 5854 5845 0 15:59 ? 00:00:00 /usr/sbin/httpd -k restart apache 5855 5845 0 15:59 ? 00:00:00 /usr/sbin/httpd -k restart apache 5856 5845 0 15:59 ? 00:00:00 /usr/sbin/httpd -k restart apache 5857 5845 0 15:59 ? 00:00:00 /usr/sbin/httpd -k restart apache 5858 5845 0 15:59 ? 00:00:00 /usr/sbin/httpd -k restart apache 5859 5845 0 15:59 ? 00:00:00 /usr/sbin/httpd -k restart
改進
[root@oldboy-B /]# echo oldboytest >/var/www/html/index.htm [root@oldboy-B /]# wget –quiet –spider [root@oldboy-B /]# echo $? 0 [root@oldboy-B /]# ll index.htm ls: index.htm: 沒有那個檔案或目錄
[root@oldboy-B scripts]# cat apachemon1 #!/bin/sh #created by oldboy 20110523 . /etc/init.d/functions #HTTPPRONUM=`ps -ef|grep http|grep -v grep|wc -l` #=====>這個是基於http方式進行判斷 wget –quiet –spider #=====>這個是基於WGET URL方式進行判斷 if [ $? -ne 0 ];then action “httpd is not running” /bin/false >/tmp/httpd.log httpdctl restart >/dev/null 2>&1 action “httpd is restart” /bin/true >>/tmp/httpd.log mail -s “`uname -n`’s httpd restarted at `(date)`” mail@qq.com exit 1 else action “httpd is running” /bin/true exit 0 fi
真正使用時,有些輸出是不需要的就去掉
[root@oldboy-B scripts]# cat apachemon1 #!/bin/sh #created by oldboy 20110523 # . /etc/init.d/functions wget –quiet –spider #=====>這個是基於WGET URL方式進行判斷 if [ $? -ne 0 ];then action “httpd is not running” /bin/false >/tmp/httpd.log httpdctl restart >/dev/null 2>&1 action “httpd is restart” /bin/true >>/tmp/httpd.log mail -s “`uname -n`’s httpd restarted at `(date)`” 31333741@qq.com exit 1 fi
多條件判斷的寫法
[root@oldboy-B scripts]# cat apachemon1 #!/bin/sh #created by oldboy 20110523 # . /etc/init.d/functions HTTPPORTNUM=`netstat -lnt|grep 80|grep -v grep|wc -l` HTTPPRONUM=`ps -ef|grep http|grep -v grep|wc -l` wget –quiet –spider && RETVAL=$? if [ $RETVAL -ne 0 ] || [ $HTTPPORTNUM -ne 1 ] || [ $HTTPPRONUM -lt 1 ] ;then #if [ "$RETVAL" != "0" -o "$HTTPPORTNUM" != "1" -o "$HTTPPRONUM" \< "1" ] ;then action “httpd is not running” /bin/false action “httpd is not running” /bin/false >/tmp/httpd.log httpdctl restart >/dev/null 2>&1 action “httpd is restart” /bin/true mail -s “`uname -n`’s httpd restarted at `(date)`” 31333741@qq.com exit 1 else action “httpd is running” /bin/true exit 0 fi
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2650417/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Shell指令碼監控MySQL主從狀態指令碼MySql
- 利用shell指令碼監控網站狀態指令碼網站
- shell指令碼:監控MySQL服務是否正常指令碼MySql
- oracle資料庫執行狀態監控SHELLOracle資料庫
- shell指令碼:監控MySQL服務是否正常薦指令碼MySql
- Nginx服務狀態監控Nginx
- shell指令碼監控啟動停止weblogic服務指令碼Web
- memcached的執行狀態監控
- 實戰模擬監控MySQL服務shell指令碼小結薦MySql指令碼
- 通過shell指令碼監控sql執行頻率指令碼SQL
- 透過shell指令碼監控sql執行頻率指令碼SQL
- Elastic 使用Heartbeat監測服務執行狀態AST
- Docker 之 執行狀態監控Docker
- MySQL MHA 執行狀態監控MySql
- 監控sqlldr執行指令碼SQL指令碼
- 【shell】磁碟監控指令碼指令碼
- 專案實戰:zabbix監控MySQL狀態、服務資訊MySql
- Linux Crontab Shell指令碼實現秒級定時任務Linux指令碼
- 利用superlance監控supervisor執行狀態
- git實戰-linux定時監控github更新狀態(二)LinuxGithub
- 常用的主機監控shell指令碼指令碼
- 使用 Prometheus 監控 eKuiper 規則執行狀態PrometheusUI
- MySQL執行狀態監控(pt-mysql-summary)MySql
- PHP定時執行任務的實現PHP
- oracle會話監控shell指令碼Oracle會話指令碼
- Shell 系統資訊監控指令碼指令碼
- 通過監控執行緒狀態來保證socket伺服器的穩定執行執行緒伺服器
- 執行緒池監控2-監控執行緒池狀態、執行緒數量和佇列任務數量等執行緒佇列
- 執行shell指令碼指令碼
- shell監控web服務的多種方案Web
- 乾貨:教你如何監控 Java 執行緒池執行狀態Java執行緒
- 監控磁碟使用率的shell指令碼指令碼
- 我常用的主機監控Shell指令碼指令碼
- 使用監聽器實現JavaWeb的定時執行JavaWeb
- shell監控服務程式是否啟動
- [服務端與網路]http協議與http狀態碼服務端HTTP協議
- 架構設計(五):有狀態服務和無狀態服務架構
- 執行Shell指令碼的方式指令碼