背景:苹果、谷歌的应用审核规则经常会更新,为及时收到变更通知,最近写了一个爬虫,现在要把这个爬虫程序部署到另一台Mac电脑上每天8:00、20:00点自动执行,在网上搜罗了一下,发现crontab这个好东西,记录一下,也分享给大家。
推荐理由
1、crontab 是Mac电脑上系统自带的工具,因此不需要下载,使用方式也很简单,最重要的是设置好它的定时规则 后面再接上我们想要执行的指令就行;
2、定时规则可以通过配置自行设置,不需要在具体任务内部设置各种定时器
step1:确认电脑中crontab 已运行
sudo /usr/sbin/cron start
如果电脑中已经运行了crontab, 会有这个提示
zsh: killed sudo /usr/sbin/cron start
step2:查看当前运行crontab定时任务:crontab -l
crontab -l
# 我这台Mac刚设置过一条自动任务,因此显示:
>0 8,20 * * * cd /Users/xxxxx/Desktop/test && ./App审核规则爬虫
setp3:编辑crontab定时任务: crontan -e
crontan -e
# 键盘输入“i”进入编辑模式
0 8,20 * * * cd /Users/xxxx/Desktop/test && ./App审核规则爬虫>> /Users/xxxx/Desktop/test/log/log_file.log 2>&1
~
~
~
"/tmp/crontab.gxe0VM2mC3" 1L, 135B
日志重定向
我在结尾新增了一段指令:
>> /Users/xxxx/Desktop/test/log/log_file.log 2>&1
目的是把App审核规则爬虫运行日志重定向至指定目录,不添加这段指令的话,任务执行时,运行日志就不那么方便查看
setp4:保存crontab任务
键盘点击esc退出编辑模式
键盘输入":"进入指令模式
键盘输入"wq" 然后回车即可保存
# 当然,如果设置的时间不对,会提示错误,比如把20前加一个空格
0 8, 20 * * * cd /Users/xxxxx/Desktop/test && ./App审核规则爬虫
crontab: installing new crontab
"/tmp/crontab.gxe0VM2mC3":0: bad hour
crontab: errors in crontab file, can't install
Do you want to retry the same edit?
在保存crontab时,就会提示 bad hour,删除空格就可以正常保存
保存成功,会提示
crontab: installing new crontab
step5:停止crontab定时任务
如果需要多个不同的定时任务,进入crontab 编辑模式后,回车新增一条指令即可。
如果要删除某个定时,也可以进入编辑模式,删除那一条指令,也可以直接执行crontab -r 删除所有定时
crontab -r
其他遇到的问题:
1、电脑息屏后,任务没有按时执行
原因:Mac 电脑息屏后,crontab 定时任务不执行,主要原因是cron 守护进程在 Mac 睡眠模式下会被暂停。
参考博文:
#解决方案:禁用 Mac 的睡眠模式,确保 cron 守护进程一直运行
sudo pmset -a disablesleep 1
2、电脑重启时,希望任务执行一次
原因:Mac 电脑息屏后,crontab 定时任务不执行,主要原因是cron 守护进程在 Mac 睡眠模式下会被暂停。
参考博文:
#解决方案:禁用 Mac 的睡眠模式,确保 cron 守护进程一直运行
sudo pmset -a disablesleep 1
网友评论