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 服务
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)