您的位置:首页 > 运维架构 > Shell

linux程序守护进程(shell)

2015-10-20 09:05 543 查看
使用shell每秒检测一次程序是否在运行,如果没有运行则自动启动程序

#!/bin/bash

#配置文件路径

CONFIGFILE="$1/config/Settings.ini"

SLASH="="

RESTARTLOG=" Daemon"

shopt -s expand_aliases

alias DATETIME='date "+%Y-%m-%d %H:%M:%S"'

PROCESS="TraceProbe"

RNCKEY="enableRNCs"

TRACEPROBE="/opt/TraceProbe/TraceProbe/TraceProbe"

DSTATUS=0

#判断配置文件是否存在

if [ ! -f $CONFIGFILE ]; then

echo "`DATETIME`$RESTARTLOG::ERROR: $CONFIGFILE do not exist!"

exit

fi

#读取配置文件信息

ReadConfig()

{

while read myline

do

CurrKey=`echo $myline | awk -F '=' '{print $1}'`

CurrValue=`echo $myline | awk -F '=' '{print $2}'`

#匹配配置文件中的内容,判断是否要启动被守护的进程

if [ $CurrKey == $RNCKEY ]; then

if [ -n "$CurrValue" ]; then

if [ -f "$TRACEPROBE" ]; then

cd "$1"

source "$1/scripts/utils"

getEnvFromOsEnv "$1"

#设置DISPLAY的值

if [ "$VDIS" == -1 ]; then

DIS=`who|grep $USER|grep tty`

DIS=${DIS#*(}

DIS=${DIS%*)}

if [ -z "$DIS" ]; then

DIS=:0.0

fi

else

DIS=$VDIS

fi

export DISPLAY="$DIS" && TraceProbe &

if [ "`ps -el | grep -w "$PROCESS" | awk '{print $14}'`" == "$PROCESS" ]; then

echo "`DATETIME`$RESTARTLOG::INFO: Some RNCs need to be run!"

echo -e "`DATETIME`$RESTARTLOG::INFO: DIS = $DIS\n"

echo -e "`DATETIME`$RESTARTLOG::INFO: Restart $TRACEPROBE successfully!\n"

DSTATUS=0

else

if [ $DSTATUS -eq 0];then

echo "`DATETIME`$RESTARTLOG::INFO: Some RNCs need to be run!"

echo -e "`DATETIME`$RESTARTLOG::INFO: DIS = $DIS\n"

echo -e "`DATETIME`$RESTARTLOG::INFO: Restart $TRACEPROBE unsuccessfully!\n"

DSTATUS=1

fi

fi

fi

fi

fi

done < $CONFIGFILE

}

#判断守护进程是否已存在,如果存在则结束本进程,如果不存在则本进程作为守护进程

if [ `ps aux | grep -v grep | grep bash | awk '{print $12}' | grep "TraceProbe_daemon" | wc -l` -le 2 ];then

echo "========================="

echo -e "`DATETIME`$RESTARTLOG::INFO: TraceProbe_daemon start!\n"

while true

do

# only in bash,截取系统中需要守护的进程的名称,如果无此进程CurrProcesses为空

CurrProcesses=`ps -el | grep -w "$PROCESS" | awk '{print $14}'`

#exist, exit

if [ "$CurrProcesses" != "$PROCESS" ]; then

ReadConfig "$1"

fi

sleep 1

done

fi
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: