美文网首页
2024年05月14日使用crontab 在Mac 上部署自启动

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

作者: 达若漠沙 | 来源:发表于2024-05-13 18:41 被阅读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 不执行

    相关文章

      网友评论

          本文标题:2024年05月14日使用crontab 在Mac 上部署自启动

          本文链接:https://www.haomeiwen.com/subject/whbpfjtx.html