检查某个服务产生core文件只发送1次短信,相同的core不发送(shell)

#!/bin/bash
#--------------------------------------------------  
#Created:2015-04-27
#Author:jimmygong
#Mail:[email protected]
#Function:check core && send message
#Version:1.0
#--------------------------------------------------
set -o nounset
set -o errexit

onlinedir="/opt/online"
tellist=(12345678912
12345678913
)

function sendmessage () {
currdate="$(date +%Y/%m/%d)"
message=$@
ip=`ifconfig eth1|awk ‘/inet addr:/‘|awk -F: ‘{print $2}‘|awk -F" " ‘{print $1}‘`
for phone in ${tellist[@]}
do
    links -dump "http://192.168.1.1/22222?mobile=$phone&msg=$currdate:$message:$ip&sign=11111111111111111111111111111111" > /dev/null 2>&1
done
}

function checkcore() {
num=`ls -1 $onlinedir|grep "^online"|wc -l`
for ((k=1;k<=${num};k++))
do
    listdir=`ls -1 $onlinedir|grep "^online"|sed -n $k‘p‘`
    for j in $onlinedir/$listdir
    do
        cd $j
        touch corefile
        for m in core.*
        do
            if [[ -e $m ]]
            then
                    core=0
                for f in `cat $j/corefile`
                do
                    if [[ $m = $f ]]
                    then
                        core=1
                        break
                    fi
                done
                if [[ $core -eq 0 ]]
                then
                    message="core"
                    sendmessage $message            
                    echo $m >> $j/corefile
                fi
            fi
        done
    done
done
}

checkcore
exit 0

============================说明======================================
目录结构
ll /opt/online/
drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.11
drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.22
drwxr-xr-x 2 root root 4096 2015-04-27 18:20 online.33

touch /opt/online/online.11/core.111
执行第1次脚本后会
ll /opt/online/online.11/
-rw-rw-r--. 1 root root 0 Apr 27 22:05 core.111
-rw-rw-r--. 1 root root 9 Apr 27 23:27 corefile
cat /opt/online/online.11/corefile 
core.111
执行第2次时就不会再发送短信和写入到这个corefile文件里了。

message=$@也可以写成message=""
$@             #所有的位置参数(每个都作为独立的字符串) 等同于"$1" "$2"... "$N"。
set -o nounset #在扩展一个没有的设置的变量的时候,显示错误的信息 
set -o errexit #如果一个命令返回一个非0退出状态值(失败),就退出.
num=`ls -1`    # -1  list one file per line
效果
ls -1 /opt/online/
online.11
online.22
online.33
需要安装links(apt-get -y install links或yum -y install links)

本文出自 “7928217” 博客,请务必保留此出处http://7938217.blog.51cto.com/7928217/1639520

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。