本章内容以CentOS 6.4 和 CentOS 7.6 两个版本为例。[6和7的命令不一样]html
步骤:java
【注意文件建立的路径】linux
【查看当前路径的命令: pwd】centos
建立文件命令:tomcat
vi tomcat.sh
【注意,标红部分须要本身修改成本身服务器上的对应地址】bash
【查看linux服务器上JAVA_HOME命令: echo $JAVA_HOME 】服务器
【关键一行:app
ps -ef|grep java | grep catalina | awk '{print $2}
能够准肯定位到当前正在tomcat下启动运行的java进程,而不是安装的java,参考地址:https://www.cnblogs.com/sxdcgaq8080/p/10734752.html 】spa
#!/bin/bash . /etc/profile export JAVA_HOME=/usr/local/jdk1.7.0_79 export JRE_HOME=$JAVA_HOME/jre tomcatPath="/backup/tomcat7" binPath="$tomcatPath/bin" echo "[info][$(date +'%F %H:%M:%S')]正在监控tomcat,路径:$tomcatPath" pid=`ps -ef|grep java | grep catalina | awk '{print $2}'` if [ -n "$pid" ]; then echo "[info][$(date +'%F %H:%M:%S')]正在运行的tomcat进程为:$pid" echo "[info][$(date +'%F %H:%M:%S')]tomcat已经启动,准备使用shutdown命令关闭..." $binPath"/shutdown.sh" sleep 2 pid=`ps -ef|grep java | grep catalina | awk '{print $2}'` if [ -n "$pid" ]; then echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令关闭失败,准备kill进程..." kill -9 $pid echo "[info][$(date +'%F %H:%M:%S')]kill进程完毕!" sleep 1 else echo "[info][$(date +'%F %H:%M:%S')]使用shutdown命令关闭成功!" fi else echo "[info][$(date +'%F %H:%M:%S')]tomcat未启动!" fi echo "[info][$(date +'%F %H:%M:%S')]准备启动tomcat..." $binPath"/startup.sh"
命令:.net
chmod 777 tomcat.sh
命令:
crontab -e
将上面的脚本文件路径,以及定时任务配置粘贴到配置文件中:
58 10 * * * /backup/tomcat7/tomcat.sh
【本配置说明: 天天10:58分 执行脚本文件,脚本文件路径在:/backup/tomcat7/tomcat.sh】
【关于定时任务的配置说明,请自行查阅】
【最后要说明的一点:本命令操做与vi操做文本命令同样】
service crond stop
service crond start
service crond restart
crontab -l
tail -f -n 200 /var/spool/mail/root
查看命令:
ps -ef|grep java
能够从下图看到,正在运行的新的java进程是在10:58 启动的【说明java进程重启成功】
能够查询下面的CentOS 7 使用cron定时任务相关操做。
systemctl is-enabled crond.service
结果展现以下:
enable表示已启用自启动 disable标识未启用自启动
systemctl enable crond.service
systemctl disable crond.service
[只有cron的状态是active running的,才表示cron服务是启动的]
systemctl status crond.service
systemctl start crond.service
systemctl stop crond.service
systemctl restart crond.service
systemctl reload crond.service
crontab -e
编辑内容和centos6 同样。表示天天7.30 执行 /mnt/apps/tomcat/tomcat.sh 路径下的脚本
30 07 * * * /mnt/apps/tomcat/tomcat.sh
若是在上面,已经把定时任务cron启动了,编辑定时任务后,会有提示
crontab -l
crontab -r
tail -f -n 200 /var/log/cron
如上述命令,整个cron操做步骤以下
1>编辑了.sh脚本,并保存,记录.sh文件所在路径【必定确保.sh脚本可用,能够尝试在编辑完成.sh文件后,直接./tomcat.sh 执行脚本文件,查看是否能够正常执行】
2>查看并设置cron为自启动
3>查看并启动cron服务,使状态为running
4>编辑并查看cron服务,注意路径和定时格式,确保cron服务编辑成功
5>最后在编辑完成cron服务后,从新加载或重启cron服务,确保cron服务状态是running的
6>最后能够经过查看cron执行日志,确保cron是否执行
7>若是cron任务不执行,确保linux服务器系统 时间 和时区 是否正常
如上,已经确保 第五点中全部 步骤都正确执行了。可是cron定时任务一直没有执行。
我这里出现的缘由,是由于服务器的时区设置不正确。
正确的时区应该是
CST
若是你的时区是
UTC
或者其余,就致使时间和时区不正确。
我设置的定时任务是17.05执行,结果等到了17.05,定时任务不执行,由于此刻的系统时间是05.05
解决方法:
http://www.javashuo.com/article/p-wljkwztk-dm.html
=================================================
参考地址:
https://blog.csdn.net/abcdad/article/details/69239249
定时启动开启后,无效解决方案: