#########################################################################
|
# File Name: monitor.sh
|
# Author:
|
# mail:
|
# Created Time: Sat 28 Nov 2015 02:03:50 AM UTC
|
# 2015-12-19: add sd card mount detect , if mount as ro , then remount as rw
|
#########################################################################
|
#!/bin/sh
|
|
app_path=/usr/local/app
|
backup_path=/usr/local/backup
|
|
mountSd=/usr/local/etc/mount_sd.sh
|
powerLog=/work/data/power.log
|
wtdog="/usr/local/script/wtd -f"
|
appEnv="/work/app.ini"
|
appEnvDef="/usr/local/default/app.ini"
|
#########################################################################
|
|
ReMountScript=/tmp/remount
|
poweroffFile=/tmp/poweroff # system poweroff flag file
|
recoderTime=/work/data/lastTime
|
|
intervalTime=6 #检测周期(s)
|
#########################################################################
|
Log=/tmp/log.txt
|
#########################################################################
|
|
|
#########################################################################
|
# fun name: findAppPathReStart
|
# in para : app name
|
#########################################################################
|
findAppPathReStart()
|
{
|
proName=$1
|
echo "***restart $proName***"
|
if [ -f $app_path/$proName ]
|
then
|
echo "start $proName"
|
if [ $proName = "linkage" ]
|
then
|
enable=`jsoner -g /work/sysConfig.json linkage`
|
if [ $enable -eq 1 ]
|
then
|
$app_path/$proName &
|
fi
|
else
|
|
$app_path/$proName &
|
fi
|
else
|
if [ $proName = "start_snmpd" ]
|
then
|
enable1=`jsoner -g /work/sysConfig.json snmp`
|
if [ $enable1 -eq 1 ]
|
then
|
/usr/local/script/start_snmpd &
|
else
|
killall -9 snmpd
|
fi
|
else
|
echo "start back $proName"
|
$backup_path/$proName &
|
fi
|
fi
|
return 0;
|
}
|
#########################################################################
|
# fun name: detectProgram
|
# in para : app name
|
#########################################################################
|
detectProgram()
|
{
|
proName=$1
|
proPid=0
|
|
proPid=`pidof $proName`
|
if [ $? -eq 0 ]; then
|
echo "find $proName running, proPid: $proPid" >> /dev/null
|
else
|
echo "$proName is not run"
|
findAppPathReStart $proName
|
fi
|
|
return 0;
|
}
|
|
detectPowerOff()
|
{
|
counter=0;
|
while true
|
do
|
if [ -f $poweroffFile ]
|
then
|
echo "poweroff..."
|
pofftime=`date '+%Y/%m/%d %H:%M:%S: '`
|
echo "$pofftime 系统断电" >> $powerLog
|
sleep 5
|
#reboot
|
fi
|
|
counter=`expr $counter + 1`
|
if [ $counter -eq $intervalTime ]
|
then
|
break;
|
fi
|
sleep 1
|
done
|
}
|
|
detectTempFile()
|
{
|
ls /tmp/ | grep "temp" >> /dev/null
|
if [ $? -eq 0 ]
|
then
|
rm /tmp/temp-*
|
fi
|
}
|
#########################################################################
|
#start main process
|
#
|
#########################################################################
|
|
|
echo "device IotNetGate start..."
|
source /etc/profile
|
|
if [ ! -f $appEnv ]
|
then
|
echo "app env file not found, copy from default."
|
cp $appEnvDef $appEnv
|
fi
|
|
while true
|
do
|
source $appEnv
|
for i in $applist
|
do
|
detectProgram $i
|
done
|
|
sleep $intervalTime
|
|
#detectPowerOff
|
|
detectTempFile
|
nowtime=`date '+%Y/%m/%d %H:%M:%S: '`
|
echo "$nowtime" > $recoderTime
|
done
|