方法1 使用 LaunchAgent

  1. 创建一个 LaunchAgent 文件到~/Library/LaunchAgents/中,文件名为com.quzard.DailyTimeMachineBackup.plist

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>Label</key>
    <string>com.quzard.DailyTimeMachineBackup</string>
    <key>ProgramArguments</key>
    <array>
    <string>/usr/bin/tmutil</string>
    <string>localsnapshot</string>
    </array>
    <key>StandardErrorPath</key>
    <string>/tmp/DailyTimeMachineBackupErr.log</string>
    <key>StandardOutPath</key>
    <string>/tmp/DailyTimeMachineBackupOut.log</string>
    <key>StartCalendarInterval</key>
    <dict>
    <key>Minute</key>
    <integer>0</integer>
    </dict>
    </dict>
    </plist>

    各条目解释:

    1
    2
    3
    4
    5
    6
    7
    Label:对应的需要保证全局唯一性;
    Program:要运行的程序;
    ProgramArguments:命令语句;
    StartCalendarInterval:运行的时间,单个时间点使用dict,多个时间点使用 array <dict>;
    StartInterval:时间间隔,与StartCalendarInterval使用其一,单位为秒;
    StandardInPath、StandardOutPath、StandardErrorPath:标准的输入输出错误文件,这里建议不要使用 .log 作为后缀,会打不开里面的信息;
    定时启动任务时,如果涉及到网络,但是电脑处于睡眠状态,是执行不了的,这个时候,可以定时的启动屏幕就好了。
  2. 通过 launchctl manageruid 命令 获取 uid

  3. 开启守护进程

    1
    launchctl load ~/Library/LaunchAgents/com.quzard.DailyTimeMachineBackup.plist
  4. 查看守护进程是否启动成功

    1
    2
    3
    4
    5
    # 当返回的结果第一个位置有数字而不是“-”时,说明程序正常运行
    launchctl list | grep jupyterhub

    # or 当列出程序进程信息时,说明程序正常运行
    pstree | grep jupyterhub | grep -v grep

方法2 使用 crontab

  1. 使用终端,crontab -e

  2. 添加以下代码

    1
    0 * * * * /usr/bin/tmutil localsnapshot

    tmutil这个 crontab 条目说在每小时 0 分钟运行命令。

  3. 授予cron运行所需的权限

    1. 从 Apple 菜单中打开“系统偏好设置”,然后选择“安全性与隐私”图标。

    2. 然后选择“隐私”选项卡并滚动左侧列表并选择“完全磁盘访问权限”。

    3. 选择左下角的锁定图标并输入管理员的凭据。

    4. 选择应用程序列表下方的 + 图标

    5. 键入Cmd+shift+g 显示路径入口文件选择界面并键入:/usr/sbin/cron并选择cron二进制文件

参考链接