linux shell 監控腳本 及 郵件發送

1.Linux腳本

    原由: 公司部署的web服務常常莫名其妙的掛掉。並且 還找不到具體的問題,使用supervisor守護的gunicorn,可是在屢次嘗試重啓失敗以後, 就不再啓動了。而後 只能想另外的辦法。寫個監控腳本,每隔一段時間查看一下進程是否存在,不存在則重啓服務。web

代碼以下:bash

#!/usr/bin/env bash

#################
#
# 進程監控腳本
# 2016-05-11 lpe234
#
# 每五分鐘 執行一次檢查.
# sudo crontab -e
# */5 * * * * /bin/bash /path/to/monitor.sh >> /path/to/monitor.log 2>&1
#
################

process_name="process_name"
process_count=10  # 理論進程數量

# 獲取church_app進程數量(默認爲10)
process_number()
{
    number=`ps -ef | grep ${process_name} | grep -v grep | wc -l`
    return ${number}
}

process_number

p_num=$?

now=`date '+%Y-%m-%d %H:%M:%S'`

if [ ${p_num} -lt ${process_count} ]
then
    # 拋出錯誤日誌
    echo "[$now] [ERROR] '$process_name' process_number is $p_num, restart it."
    # TODO: 發送報警郵件.....
    # 重啓web服務相關代碼
# 調試信息
#else
#    echo "[$now] [DEBUG] '$process_name' process_number is $p_num, status ok."
fi

額, 大概就是這個樣子。 app

crontab 有兩種配置方式。 一種是 修改 /etc/crontab 文件, 須要制定執行命令的帳戶。 第二種是  crontab -e 直接編輯, 此時不須要指定執行用戶, 默認爲當前編輯用戶。使用 crontab -l 便可查看當前用戶的全部定時任務(不包括 修改 /etc/crontab 文件 添加的定時任務)spa


2.使用系統自帶的 mail 發送郵件

這個, 折騰了大半天。好多都只是說了怎麼發送郵件。但沒有說具體怎麼配置。調試

修改  /etc/mail.rc  這個文件, 條件以下內容:rest

# mail config
set from=xxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxx
set smtp-auth-password=xxx
set smtp-auth=login

而後, 理論上就能夠愉快的發送郵件了。日誌

mail -s '123' lpe234@qq.com < x.sh

至於 添加附件之類的。 有時間再研究吧。code

相關文章
相關標籤/搜索