crontab定时任务不执行的原因

crontab定时任务不执行的原因,第1张

1 crond服务未启动

crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止。如果停止了就无法执行任何定时任务了,解决的方法是打开它: /sbin

service crond start

2 权限问题

比如:脚本没有x执行权限,解决方法:

增加执行权限,或者用bash abcsh的方法执行

也有可能crontab任务所属的用户对某个目录没有写权限,也会失败

3 时差问题

因为服务器与客户端时差问题,所以crontab的时间以服务器时间为准。

时差这个问题还真是搞人,这个我亲身体验了,现象如下:

(1) 我设置了一个定时脚本,用date命令观察服务器的时间到了脚本执行的时间点,发现没有执行

(2) 但是我把脚本设置成每分钟执行一次,就是OK的

见鬼了,服务器时间是对的啊?莫非是要加个什么时区?于是把脚本的时间减10或者12或者8个小时都尝试了下,发现都不行。

但是很明显是时间不一致导致的不执行。

最后用如下两行解决了问题:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

service crond restart

参考这篇文章: >系统服务是一种应用程序类型,它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能,Linux系统服务中的cron就有这样的功能。
cron进程介绍:
cron进程为Linux用户提供一种可以计划在一定时间间隔后自动执行任务的功能。cron通常还会负责at队列中作业的启动。
该进程从crontab文件中得到信息,对于每个用户都会有一个独立的crontab文件。
运行crontab -l命令,就可以查看已排列的命令列表。
如果要更改cron信息,必须创建一个crontab文件。crontab有固定的格式,有效行包括六个区域,即:
分钟(0-59),小时(0-23),日(1-31),月(1-12),星期(0-7,0和7都代表周日),命令(要运行的任务)
每个区域都可能带一个星号,表示整个区间,每个区域也可以使用x-y的形式包含一个范围,也可能包含一个用逗号隔开的列表。

上面命令用来启动cron服务

可以通过执行命令  ps -ef | grep cron 查看 cron 服务是否正在运行

sudo /usr/sbin/service cron status 查看crontab服务状态

sudo /usr/sbin/service cron reload  重新 cron 服务配置

sudo /usr/sbin/service cron restart 重新启动 cron 服务

sudo /usr/sbin/service cron stop  停止 cron 服务


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10579993.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存