shell脚本放到crontab里定时执行

需求需要定时检查zookeeper进程和mq进程,当进程不存在时去需要自动启动,把检查进程的脚本写好后,添加到crontab中 设置定时多久执行。


检测zookeeper进程脚本 check_zk.sh

#!/bin/sh
#echo `date`
source /etc/profile
PID=`ps aux | grep QuorumPeerMain | grep -v "grep" |wc -l`
#pid=`ps aux | grep QuorumPeerMain | grep -v "grep"`
echo $PID
while [ $PID -eq 0 ]; do
    echo `date`
    echo '开始启动zk脚本'
    /home/ekanet/esb/zookeeper-3.4.6/bin/zkServer.sh start & 
   sleep 1
    exit 0
done


检测mq进程脚本 check_mq.sh

#!/bin/sh
#echo `date`
source /etc/profile
PID=`ps aux | grep activemq.jar | grep -v "grep" |wc -l`
#pid=`ps aux | grep activemq.jar | grep -v "grep"`
echo $PID
while [ $PID -eq 0 ]; do
     echo `date`
     echo '开始启动mq脚本'
    /home/ekanet/esb/apache-activemq-5.13.4/bin/activemq  start &
   sleep 1
    exit 0
done




编辑crontab  使用命令 crontab -e


#每隔1分钟检测一次
*/1 * * * * /home/ekanet/esb/scripts/check_zk.sh >> /home/ekanet/esb/scripts/zklog.log
*/1 * * * * /home/ekanet/esb/scripts/check_mq.sh >> /home/ekanet/esb/scripts/mqlog.log

在实际使用中碰到直接执行脚本check_zk.sh能运行,但是放置到crontab中执行时并不能把zk服务启动起来。解决方法

有些shell脚本正常执行没问题,但放到crontab里就执行不成功,原因是因为crontab执行脚本的时候不会读取用户的环境变量等配置 
解决方法: 
1.在shell前面export下$PATH

export $PATH
 
 
  • 1

2.或者source下/etc/profile

source /etc/profile




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值