实现linux定时任务有:cron、anacron、at等,但平时工作中接触到的是cron服务。cron是服务名称,crond是后台进程,crontab则是定做好的计划任务表。项目中常常用到定时任务实现个别功能,近来遇见定时任务不执行的情况,因为之前对这个不太了解,费时吃力,最后终于找到问题所在。为此想跟你们分享一下排查技巧,之后少走弯路。
1.查看crond服务是否执行。
通过命令pgrepcrond或/sbin/servicecrondstatus可查看到crond的进程pid,可以确定crond服务是否在运行。
2.查看cron服务是否起作用:
使用命令sudotail–f/var/log/cron
只要在这个log上面出现命令就说明执行了。走到这一步的时侯linux 输入法,我发觉log里面并没有执行的记录,那说明我的定时任务并没有执行。
3.这么接出来就要排查为何没有执行,大约有以下几种情况:
(1)脚本:脚本问题引起crontab不执行的机率是很高的,也是最为常见的,那没办法,只能查看脚本。可以将脚本自动执行下,看是否报错,若报错就检测脚本;
自动执行成功,排查是否为环境变量引起crontab执行失败。任务的执行环境为当前用户或指定用户的执行环境linux定时任务不执行,所以,编码时linux定时任务不执行,尽量通过全路径名引用文件或调用命令,或则将引用的文件或则命令的路径添加到环境变量中。
(2)系统时间不同,也会造成定时任务不执行,此时你就要查看系统时间
Date(查看)
Date–smm/dd/yy(修改系统时间)
(3)crontab守护进程跑掉了,重启该进程;
servicecrondrestart
(4)脚本编码有问题;
脚本在window下编撰linux rar,传到linux下后报“锘?!/bin/bash”,用vi编辑器新建新shell脚本,输入内容后保存。
(5)查看脚本是否有可执行权限。必须保证执行脚本的用户有执行改文件的权限。
以上就是Linux 定时任务不执行怎么办?一文教你排查方法的详细内容,更多请关注小闻网其它相关文章!
评论(0)