Crontab简介
crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活。crond 常常在后台运行,每一分钟检查是否有预定的作业需要执行
一、安装
yum -y install vixie-cron
yum -y install crontabs
二、配置
cron 是 linux 的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务
service crond start //启动服务 service crond stop //关闭服务 service crond restart //重启服务 service crond reload //重新载入配置 service crond status //查看crontab服务状态在CentOS系统中加入开机自动启动:
chkconfig --level 345 crond on
编辑crontab执行脚本任务
crontab -e
打开编辑面板
* * * * * /data/tomcats/tomcat_crontab.sh (参数) 需要被守护的tomcat名字
0 0 * * * /data/tomcats/clean_up.sh
第一条为每分钟去执行tomcat守护脚本
第二条为每天0时清除日志也可以使用logrotate管理日志文件
crontab最小时间周期为分钟,如果想实现每秒钟执行,可以在脚本中通过代码实现,下面会附上实现脚本
编辑tomcat守护脚本
一、vim tomcat_crontab.sh
MYPATH=/data/tomcats/jdk1.8.0_40/bin
export JAVA_HOME=/data/tomcats/jdk1.8.0_40
export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
export MYPATH=$MYPATH:$JAVA_HOME/bin
tomcatName=$1
TomcatMonitorLog=/var/log/TomcatMonitor.log
Monitor()
{
for ((i=0;i<60;i++));
do
tomcatID=$(ps -ef |grep tomcat |grep -w ${tomcatName} |grep -v 'grep'|awk '{print $2}')
echo $tomcatID
if [ $tomcatID ];then
echo "server working ${tomcatName} [$(date +'%F %H:%M:%S')]"
else
ps -ef|grep ${tomcatName}|grep -v grep|awk '{print $2}'|xargs kill -9
echo "tomcat stoped [$(date +'%F %H:%M:%S')]"
echo "[error] tomcat need to restart"
echo "[info] waiting..."
rm -rf /data/tomcats/${tomcatName}/work
/data/tomcats/${tomcatName}/bin/startup.sh
fi
echo "------------------------------"
sleep 1
done
}
Monitor>>$TomcatMonitorLog
二、对脚本赋予可执行权限
chmod -R 777 tomcat_crontab.sh
三、配置好crontab执行周期
crontab -e 具体配置代码上文已经提到
四、重新加载crontab配置
service crond reload