2024年05月14日使用crontab 在Mac 上部署自启动

2024-05-13  本文已影响0人  达若漠沙

背景:苹果、谷歌的应用审核规则经常会更新,为及时收到变更通知,最近写了一个爬虫,现在要把这个爬虫程序部署到另一台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

常用的一些定时指令

Mac 自动任务 crontab 不执行

上一篇下一篇

猜你喜欢

热点阅读