今天在Liunx系统里面写了一个定时重启tomcat的.sh脚本文件,单独运行这个.sh文件可以正常执行,但是加入到Liunx的定时任务crontab里面发现根本就不执行,于是就逐步排查问题?
1、确认服务器是否开启定时任务计划服务,只有root用户才能对crond服务进行开启和关闭。
执行命令查看是否开启了crond服务:service crond status。
如果出现如下图所示,表示 crond服务开启
2、如果crond服务没有开启,执行启动 crond服务命令,启动crond服务
启动crond服务:service crond start
附带一下操作crond的其它命令(crond在Liunx 上面的安装路径为:/etc/init.d/crond):
/etc/init.d/crond start = service crond start #启动crond服务
/etc/init.d/crond stop = service crond stop #停止crond服务
/etc/init.d/crond status = service crond status #crond服务状态
/etc/init.d/crond condrestart = service crond condrestart
/etc/init.d/crond try-restart = service crond try-restart
/etc/init.d/crond reload = service crond reload
/etc/init.d/crond force-reload= service crond force-reload
chkconfig --level 2345 crond on #crond 加入到开机启动
3、如果执行上面两步之后,定时任务还是不运行的话,就指定shell解释器命令,执行命令:crontab -e,在头部加入:SHELL=/bin/bash,截图如下:
4、如果要执行的1.sh文件里面引用到了2.sh,在crontab 里面又有用的是绝对路径: */30 * * * * /opt/1.sh,那么如果在1.sh中引用的2.sh不是写的绝对路径的话,运行1.sh
会报找不到路径的错误,解决办法是:先进入该目录,然后在执行脚本。*/30 * * * * /opt/ && ./1.sh
5、如果到现在还不能执行的话,就要看看root用户的crontab是否生效,执行命令:crontab -u root /var/spool/cron/root,然后重启crontab服务:service crond restart
我的天竟然可以了,原来折腾了这么久,是我的root用户的crontab没有生效。