CentOS crontab定时任务不执行的解决
  BW1XAG7RjrKC 2023年11月02日 32 0


crontab 配置文件

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# .—————- minute (0 – 59) 
# |  .————- hour (0 – 23)
# |  |  .———- day of month (1 – 31)
# |  |  |  .——- month (1 – 12) OR jan,feb,mar,apr … 
# |  |  |  |  .—- day of week (0 – 6) (Sunday=0 or 7)  OR
#sun,mon,tue,wed,thu,fri,sat 
# |  |  |  |  |
# m h dom mon dow command
# *  *  *  *  *  command will be executed

例如:

*/5 * * * * root /usr/libexec/atrun

minute(m)      :  代表一小时内的第几分,范围 0-59。 
hour    (h)       :  代表一天中的第几小时,范围 0-23。 
mday  (dom)  :  代表一个月中的第几天,范围 1-31。 
month(mon)  :   代表一年中第几个月,范围 1-12。 
wday  (dow)  :   代表星期几,范围 0-7 (0及7都是星期天)。 
who                    :   要使用什么身份执行该指令,当您使用 crontab -e 时,不必加此字段。 
command(command):所要执行的指令。 

 

crond 开机启动

crond 启动/关闭脚本

/etc/init.d/crond help
Usage: /etc/init.d/crond {start|s​​​top​​|status|restart|condrestart|try-restart|reload|force-reload}

crond 加入到开机启动

chkconfig crond on

 

crontab定时任务不执行问题

排查原因步骤如下:

首先,确认服务器是否开启定时任务计划服务,只有root用户才能对crond服务进行开启和关闭

[root@mimvp-bj script]# service crond status
crond is stopped
[root@mimvp-bj script]# service crond start
Starting crond:                                            [  OK  ]
[root@mimvp-bj script]# service crond status
crond (pid  24577) is running…

 

请确保crond状态为 is running… 

crond is stopped

 

crontab 常见错误的几个问题

编辑 crontab :
crontab -e

# m h  dom mon dow   command
SHELL=/bin/bash
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh

Ctrl + O (写入)——》 Enter键(保存文件名)——》 Ctrl + X(退出) 

输入查看命令:

crontab -l

# m h  dom mon dow   command
SHELL=/bin/bash
30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(推荐用此方式)

 

如果遇到shell语法错误

<code style="padding: 0px; margin: 0px; border: 0px; vertical-align: baseline; font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;"><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102); border: 0px; vertical-align: baseline;"><span class="typ" style="padding: 0px; margin: 0px;">Syntax</span></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0); border: 0px; vertical-align: baseline;"><span class="pln" style="padding: 0px; margin: 0px;"> error</span></span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0); border: 0px; vertical-align: baseline;"><span class="pun" style="padding: 0px; margin: 0px;">:</span></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0); border: 0px; vertical-align: baseline;"><span class="pln" style="padding: 0px; margin: 0px;"> </span></span><span class="str" style="padding: 0px; margin: 0px; color: rgb(0, 136, 0); border: 0px; vertical-align: baseline;"><span class="str" style="padding: 0px; margin: 0px;">"("</span></span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0); border: 0px; vertical-align: baseline;"><span class="pln" style="padding: 0px; margin: 0px;"> unexpected  </span></span></code>

解决方法:

需指定shell解释器命令:SHELL=/bin/bash(请参见上面 crontab编辑示例SHELL=/bin/bash)

或者参见: ​​LINUX – BASH Syntax Error​

 

如果遇到路径错误

在 /var/spool/crontab/yanggang 中,添加了如下命令,在日志文件 /var/spool/mail/yanggang 中提示找不到 xxx.sh 路径

30 * * * *  /home/barry/top800/top10/top10_fruits/top10_all.sh

30 * * * * bash /home/barry/top800/top10/top10_fruits/top10_all.sh

top10_all.sh,因此在脚本 top10_all.sh 中引用的其它脚本也都需要使用绝对路径,才能被crontab找到并执行。

那么该如何避免绝对路径呢,推荐采用如下格式:

30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(推荐用此方式)

先进入该目录,然后在执行脚本;否则,执行脚本中的其它脚本都需要加绝对路径
原文:http://blog.mimvp.com/2015/03/centos-crontab-task-does-not-regularly-perform-solution/

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
BW1XAG7RjrKC