我可以使用 Cron 在 macOS 上安排每日提交吗?

Can I use Cron to schedule a daily commit on macOS?

我目前正在从事一个项目,我希望每天将其提交到回购作为第三备份。我编写了以下小脚本来快速提交当天的更改:

REPO_PATH="/Users/niekvandepas/my-project"
git -C "$REPO_PATH" add -A
git -C "$REPO_PATH" commit -m "`date`"

脚本按预期工作,提交我当天的更改并带有时间戳。现在我希望能够每天自动 运行 这个脚本。我尝试为此使用 cron,但我 运行 遇到了一个关于(我认为)目录或文件权限的问题。

我已将上述脚本放入 /usr/local/bin/commitscript.sh 并验证它仍然有效。然后我将以下行添加到我的用户 crontab (crontab -e, no sudo):

0 10 * * * /usr/local/bin/commitscript.sh > /tmp/cron.log 2> /tmp/cron.err

然而,当 10:00 出现时,我的更改没有提交,并且 /tmp/cron.err 有以下几行:

fatal: Unable to read current working directory: Operation not permitted
fatal: Unable to read current working directory: Operation not permitted

我假设这两个都是致命的 git 错误,分别是 git addgit commit。这让我感到困惑,因为它是我的用户 crontab,而 git 存储库位于我的主目录中。有什么想法吗?

顺便说一句,我运行正在使用 macOS Big Sur 11.4 并已授予 iTerm 完整磁盘访问权限。

您可能需要像使用 iTerm 一样手动为 cron 可执行文件提供所需的访问权限。这有时是必要的,因为后台的 cron 作业 运行 可能需要自己获得授权才能访问某些资源。

要授予 /usr/sbin/cron 完整磁盘访问权限,您可以打开 系统偏好设置 ,导航至 安全与隐私 ,select Privacy 在选项卡栏和 select Full Disk Access 在左侧边栏。然后点击 + 按钮,搜索 & select 可执行文件 /usr/sbin/cron 然后点击 打开 .

这将在应用程序列表中添加一个条目,您的 cronjob 现在应该具有所需的权限。这是系统偏好设置面板的屏幕截图: