今天一位朋友问我:老范,我Linux系统的的crontab定时任务咋不执行?命令如下:
* * * * * /usr/bin/curl http://www.test.com/index.php?a=login&m=crontab >> /home/laofandata/cron.log 2>&1
解决方法
想解决问题,必须要先清楚原因,由于类似这种问题的原因可以有很多,我只好随即开始展开排查:
1、单独访问了这个url。
成功!
2、我登陆宝塔面板。添加了访问url的定时任务。
可以正常请求!
3、查看服务器cron服务。
发现cron服务没启动。
cron服务开启命令如下:
service crond start
4、新增一个定时任务,访问百度,并写入日志 , 显示成功,命令如下:
* * * * * /usr/bin/curl http://www.baidu.com >> /home/laofandata/cron_baidu.log 2>&1
此时我就纳闷了......为啥用上面那个定时任务命令还不行?
结果,我查询了资料发现一个问题,我们的链接中 带 & 符号。 curl 服务不能正常解析,访问不到。
修改后的命令如下:
* * * * * /usr/bin/curl 'http://www.test.com/index.php?a=login&m=crontab' >> /home/laofandata/cron.log 2>&1
其实,就是在 这个连接上 加了“单引号”,已经完美解决了!
crontab定时任务拓展知识
1、Centos cron命令:
service crond start
service crond stop
service crond reload
service crond status
2、Ubuntu cron命令。你需要把 crond 换成 cron
service cron start
service cron stop
service cron reload
service cron status