Nginx學(xué)習(xí)筆記3:Shell腳本檢測Nginx服務(wù)狀態(tài)

前言

nginx 服務(wù)啟動后,我們需要對其服務(wù)狀態(tài)進(jìn)行監(jiān)控,今天學(xué)習(xí)過程中了解到一段非常有用的小腳本,不僅可以監(jiān)控Nginx,也可以用來監(jiān)控其他服務(wù)

腳本

A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

腳本解析

ps -C nginx –no-header

這里涉及ps 的用法,我們一般用ps查看相關(guān)進(jìn)程,一般都是用
ps -ef | grep XX 或 ps -aux| grep XX 的模式
如下:

[root@bogon ~]# ps -ef | grep nginx
root       2248      1  0 19:13 ?        00:00:00 nginx: master process ./nginx
nobody     3265   2248  0 20:16 ?        00:00:00 nginx: worker process
root       4791   4742  0 22:05 pts/1    00:00:00 grep --color=auto nginx

但是這樣通常都會覆蓋一個grep的進(jìn)程
我們可以用ps -C 或ps -c 的方式, -C 后面接命令的名字 ,如下:

[root@bogon ~]# ps -C nginx
   PID TTY          TIME CMD
  4983 ?        00:00:00 nginx
  4984 ?        00:00:00 nginx

--no-header 就是去挑title,如下:

[root@bogon ~]# ps -C nginx --no-header
  4983 ?        00:00:00 nginx
  4984 ?        00:00:00 nginx

wc -l 這個很熟悉了,行數(shù)計算

所以用這種方式可判斷,如果
ps -C nginx --no-header|wc -l

如果值為0,即代表服務(wù)未啟動
如果值為非0,即代表服務(wù)已啟動

還有一個知識點,killall keepalived 這個是以服務(wù)名稱殺死進(jìn)程,日常中也用的挺多的

舉一反三

上面那段完整的腳本意思即為:
判斷nginx 服務(wù)是否啟動
如果未啟動,執(zhí)行啟動命令
再次判斷,如果啟動失敗,關(guān)掉keepalived,進(jìn)入從節(jié)點
關(guān)于Nginx的主從我們后面會實操后記錄

最重要的一點是,這段腳本不僅可以用來監(jiān)控Nginx,其他服務(wù)也是可以的,模式是一樣的,大家可以自行試試

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容