现在的位置:首页>空间域名>正文

crontab定时任务不执行的原因以及解决方案

2017年03月30日 ⁄ 共 1677字 暂无评论

部落之前在网站中介绍过很多关于crontab定时任务的操作,如果我要linux定时去执行某个脚本或者定时某个http请求,可以用crontab来实现,别说,有crontab这个命令,我们可以做的事情非常多了,但很多朋友,不管是运行脚本,还是直接运行命令,总是出现一些意想不到的问题,这里我们一起来看看crontab定时任务不执行的原因以及解决方案.

解决方案

首先得确定,脚本写的是否正确,shell脚本是否拥有执行权限。一切正常还不能执行的话,就用以下方法

使root用户的crontab生效

  1. crontab -u root /var/spool/cron/root

重启crontab服务

  1. service crond restart

可能出现的错误

  1. "cronfile1":2: premature EOF
  2. errors in crontab file, can"t install.

在crontab文件末尾增加一个空行就可解决此问题.

  1. "/tmp/crontab.NINM91":1: bad day-of-week
  2. errors in crontab file,can"t install

根据提示,是第一行的 周写错了

crontab -e保存时,crond会检测时间格式,如果时间格式不正确就会报错errors in crontab file,can’t install,还是一个很人性化的设置。

如果确定时间格式没写错,就先不要管他了,先测试下crontab是否执行吧.

相关延伸:

crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。

cron 系统调度进程。 可以使用它在每天的非高峰负荷时间段运行作业,或在一周或一月中的不同时段运行。cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。crontab命令允许用户提交、编辑或删除相应的作业。每一个用户都可以有一个crontab文件来保存调度信息。系统管理员可以通过cron.deny 和 cron.allow 这两个文件来禁止或允许用户拥有自己的crontab文件。

crontab的语法:

  1. crontab [-u username] [-l|-e|-r]   
  2. 选项与参数:   
  3. -u  :只有 root 才能进行这个任务,亦即帮其他使用者创建/移除 crontab 工作排程;   
  4. -e  :编辑 crontab 的工作内容   
  5. -l  :查阅 crontab 的工作内容   
  6. -r  :移除所有的 crontab 的工作内容,若仅要移除一项,请用 -e 去编辑  

1:查看当前用户的定时任务

[oracle@localhost ~]$ crontab -l

* * * * * /home/oracle/test.sh >/dev/null 2>&1

2:编辑当前用户的定时任务

可以在编辑状态修改、删除、新增一些定时任务。注释一般用#

[oracle@localhost ~]$ crontab -e

3:删除当前用户的定时任务

[root@localhost ~]# crontab -r

[root@localhost ~]# crontab -l

no crontab for root

配置定时任务时,需要注意两个问题:

1: 在SHELL中设置了必要的环境变量;例如一个shell脚本手工执行OK,但是配置成后台作业执行时,获取不到ORACLE的环境变量,这是因为crontab环境变量问题,Crontab的环境默认情况下并不包含系统中当前用户的环境。所以,你需要在shell脚本中添加必要的环境变量的设置

2: 尽量所有的文件都采用完全路径方式,避免使用相对路径.

 

 

小结

crontab定时任务这个功能,确实相当好,一般情况下,如果出现问题,我们都需要先检查自己的脚本代码.

给我留言