Mac定时任务crontab不执行,手动可以执行crontab自动无法执行解决方法

蛰伏已久 蛰伏已久 2019-06-20

最近需要在mac笔记本上定时执行一段python代码,定时抓取一些网站信息,可是在设置crontab之后,死活不执行,百度找了几个小时,都是一些重复内容,这也是让人比较无语的,浪费时间,特总结出来,希望帮到大家。

是否crontab真的没有执行?

我们先检测一下是否crontab真的没有执行。

执行:sudo launchctl list | grep cron

我的结果:257	0	com.vix.cron

说明定时任务功能是开启的,然后再写个最简单的任务,看看到底有没有自动执行,先不要用自己的真实任务测试,我们先建一个定时任务,每分钟往文本文档中插入当前日期。

crontab -e

编辑定时器内容,如下,我是放到我的桌面,替换成自己的目录
* * * * * /bin/date >>  /Users/yourname/Desktop/cron.txt

确实,每分钟都会在cron.txt中写入日期,说明定时任务是执行的,我之前就是因为没有做这个测试,一直以为定时任务时没启动,所以方向都搞错了。

现在可以明确,定时任务时启动的,只是我们的脚本没有执行起来。

添加环境变量

实际也很简单,我们手动执行某个脚本时,是在当前shell环境下进行的,程序能找到环境变量;而系统自动执行任务调度时,除了默认的环境,是不会加载任何其他环境变量的。因此就需要在crontab文件中指定任务运行所需的所有环境变量。

修改你的脚本

#! /bin/sh 
source /etc/profile   //添加这句,
//其他脚本

好了,终于执行了



分享到

点赞(8)