背景:机房在刚搭建之初总是各种各样的原因断电,需要频繁的手动重启服务,就很烦~
来吧,show your code no bb
1,写个shell脚本,用于监测服务是否被杀死,若被杀死则重启
#!/bin/bash
tomcatPath=/data/tomcat
binPath="$tomcatPath/bin"
echo "[info][$(date +'%F %H:%M:%S')]正在监控tomcat,路径:$tomcatPath"
echo "[info][$(date +'%F %H:%M:%S')]正在监控tomcat,路径:$tomcatPath bin路径:$binPath"
pid=`ps aux | grep "/data/tomcat/bin" | grep -v grep | grep -v retomcat | awk '{print $2}'`
echo "[info][$(date +'%F %H:%M:%S')]tomcat进程为:$pid"
if [ -n "$pid" ]; then
echo "[info][$(date +'%F %H:%M:%S')]tomcat进程为:$pid"
else
echo "[info][$(date +'%F %H:%M:%S')]tomcat未启动!"
echo "[info][$(date +'%F %H:%M:%S')]准备删除工作work缓存目录... 路径:$tomcatPath"/work""
rm -rf $tomcatPath"/work/*"
echo "[info][$(date +'%F %H:%M:%S')]准备启动tomcat..."
$binPath"/catalina.sh" start
fi
脚本可以放在下文所示的目录中(/etc/cron.d)
脚本需要可执行权限,这没啥说的
chmod +x restart_oa.sh
2,cron命令
2.1
- /var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
- /etc/crontab 这个文件负责调度各种管理和维护任务。
- /etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
- 我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
2.2
crontab [-u username] //省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作作)
在root用户下(你的服务是用root启动的)执行
我们用crontab -e进入当前用户的工作表编辑 cron表达式 脚本目录
格式如下
* * * * * /etc/cron.d/restart_oa.sh : 每分钟执行restart_oa.sh脚本