linux程序守护进程(shell)

使用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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高晓伟_Steven

相逢即是有缘,动力源于金钱。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值