一、进程监听自启动shell脚本
#!/bin/sh
while [ 1 ]
do
ps -fe|grep chargepost |grep -v grep
if [ $? -ne 0 ]
then
echo chargepost `date '+%Y%m%d %H:%S:%M'`
echo "start process....."
cd $PRJHOME/bin;./chargepost
else
echo "runing....."
fi
sleep 30
done
shell脚本说明:
$?特殊符号表示上一个命令退出的状态或者函数返回值,其余的特殊命令如下:
二、判断文件改写时间与系统时间差脚本 也可用于程序自启动
filepath=/home/sznari/D/OnlineMonitor/log/onmon.log
if [ -f $filepath ];
then
echo "文件存在!"
else
echo "文件不存在或者您输入的路径有误"
fi
while [ 1 ]
do
sleep 10s #睡眠1min
timestamp=`date +%s` #获取当前系统时间
filetimestamp=`stat -c %Y $filepath`
time_cha=$((timestamp-$filetimestamp))
if [ $time_cha -gt 86400 ];
then
echo "时间差为:$time_cha 秒,当前时间大于文件最后修改时间一天"
pkill isaclient
echo "pkill isaclient success!"
else
echo "时间差为:$time_cha 秒,当前时间小于文件最后修改时间一天"
fi
done
二、Shell脚本实现多线程
通过{}&后面添加&的方式可以实现多线程,否则脚本执行启动了一个进程后,该脚本的所有权就被这个进程获取,不能继续执行
#!/bin/sh
sleep 15
while [ 1 ]
do
{
ps -fe|grep rtdb |grep -v grep
if [ $? -ne 0 ]
then
echo rtdb `date '+%Y%m%d %H:%S:%M'`
echo "start rtdb process....."
cd /home/PRS7000/bin;./rtdb
else
echo "rtdb is runing....."
fi
} &
{
ps -fe|grep data_bus |grep -v grep
if [ $? -ne 0 ]
then
echo data_bus `date '+%Y%m%d %H:%S:%M'`
echo "start data_bus process....."
cd /home/PRS7000/bin;./data_bus
else
echo "data_bus is runing....."
fi
} &
sleep 60
done