文章大纲

cron命令手动执行成功,但在cron中却不执行

2019-12-09 22:13:42


自认为cron用得还算上手,没想到今天还是中招了。


再次总结一下,加深印象。


一定要注意使用绝对路径,而绝对路径又要注意以下两点:

1. crontab -e里命令中的文件路径

2. 定时计划任务执行的脚本里的文件路径


本次我中的就是第2招。


看我的具体例子就清楚了。


为了测试定时计划任务执行bash脚本是否正常,我打算写个bash脚本,要做的事情就是删除一个文件。


如果文件删除成功了,我就默认定时计划任务执行正常。


我的检验步骤:

1. 在/data/www目录下新建了一个zhai.log文件。


2. 在/data/www目录下新建了一个test.sh文件,内容如下:

#!/bin/bash
rm -f zhai.log


3.在crontab -e中加入了如下命令:

1/* * * * * /bin/bash  /data/www/test.sh > /dev/null  2>&1


结果等半天,文件并没有删掉。按理论应该隔个1分钟文件就会被删掉的。


检查服务正常,检查日志也正常,把命令拿出来单独执行也ok(我没换目录,仍然在/data/www目录下执行的),所以当时就有点纳闷了。


顺便提下上面命令里定时的顺序。


在以往的文章有总结过这个时间顺序的记忆技巧,今天再次跟大家一起重温下:

记忆诀窍:分时日月周,分时,谐音粉丝,日月,是自然朗读的顺序。

ok,回到我的步骤当中去。


第3步,可以看出,无论是bash命令位置,还是test.sh脚本文件位置,我都是用了绝对路径的。


但是,test.sh里zhai.log这个文件我没有用绝对路径,才导致我没能如愿的看到zhai.log文件被删除。


最终将test.sh改成如下就ok了:

#!/bin/bash
rm -f /data/www/zhai.log


本文是翟码农个人博客里linux分类下的文章,转载请注明出处:http://www.zhai14.com/blog/a39d983bed7a28b0d4611ada8d5b9336.html


简单总结一下:

当遇到定时计划任务不成功时,记得从以下几个方面进行检查。

1. 命令单独放在任意目录下执行,检验脚本功能是否正常。注意,是饪意二字。

重点:定时计划任务里的命令,要记得更换目录后再执行测试一下


2. 检查定时计划任务是否开启

ps -ef |grep crond

看到crond就表示crond服务有开启


或者用下面命令:

service crond status

提示Pid xxxx is runing...,则也代表crond服务已开启


3.检查cron日志

有时日志会显示很清楚的错误提示。





我要评论
评论列表