案例五: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指令碼:監控MySQL服務是否正常指令碼MySql
- shell指令碼監控啟動停止weblogic服務指令碼Web
- Docker 之 執行狀態監控Docker
- MySQL MHA 執行狀態監控MySql
- Linux Crontab Shell指令碼實現秒級定時任務Linux指令碼
- 【shell】磁碟監控指令碼指令碼
- Elastic 使用Heartbeat監測服務執行狀態AST
- 利用superlance監控supervisor執行狀態
- git實戰-linux定時監控github更新狀態(二)LinuxGithub
- 執行shell指令碼指令碼
- 專案實戰:zabbix監控MySQL狀態、服務資訊MySql
- 監控磁碟使用率的shell指令碼指令碼
- 使用 Prometheus 監控 eKuiper 規則執行狀態PrometheusUI
- Shell 系統資訊監控指令碼指令碼
- PHP定時執行任務的實現PHP
- 執行緒池監控2-監控執行緒池狀態、執行緒數量和佇列任務數量等執行緒佇列
- Shell 指令碼中的exit狀態解釋指令碼
- 乾貨:教你如何監控 Java 執行緒池執行狀態Java執行緒
- Linux 定時執行指令碼、命令Linux指令碼
- Linux定時執行.sh指令碼Linux指令碼
- shell指令碼案例指令碼
- shell監控服務程式是否啟動
- 【flask】使用prometheus_client監控服務相關狀態FlaskPrometheusclient
- 監控 SQL Server 的執行狀況SQLServer
- [服務端與網路]http協議與http狀態碼服務端HTTP協議
- Linux shell:執行shell指令碼的幾種方式Linux指令碼
- 通過 Redis 定時執行指令碼Redis指令碼
- 如何用crontab每隔1分鐘執行一個命令列指令碼,shell設定時任務命令列指令碼
- 網路卡流量監控指令碼,python實現指令碼Python
- 分享實用監控指令碼:使用Shell檢查程式是否存在指令碼
- 架構設計(五):有狀態服務和無狀態服務架構
- Angular 如何通過 HTTP Interceptor 實現 HTTP 請求的超時監控AngularHTTP
- jProfiler遠端連線Linux監控jvm、tomcat執行狀態LinuxJVMTomcat
- linux實現shell指令碼監控磁碟記憶體達到閾值時清理catalina.out日誌Linux指令碼記憶體
- Mac 終端執行 shell 指令碼Mac指令碼
- 基於websocket的celery任務狀態監控Web
- 在Linux中,如何使用shell指令碼判斷某個服務是否正在執行?Linux指令碼