当计算机突然停止按计划执行任务时,往往会让人感到困惑。最近我也碰到了这样的问题,发现我的Crontab任务中的rsync不再按预期工作。这是怎么回事呢?
错误信息告诉我:
rsync: opendir “/Users/
/Library/Mobile Documents/iCloud/md-obsidian/Documents/Zen” failed: Operation not permitted (1)”
随后又提示了“IO error encountered — skipping file deletion
但是,在终端中手动执行这个任务却没有问题。这使我开始怀疑是不是我遇到了某种权限问题。果不其然,经过仔细检查,我发现问题出在了我升级到Mac Catalina版本后的系统权限上。
解决方法其实并不复杂。我打开了“System Preferences(系统偏好设置)” > “Security & Privacy(安全与隐私)” > “Privacy(隐私)” > “Files and Folders(文件和文件夹)”,然后将crontab和rsync添加到允许访问的列表中。找到隐藏文件夹也变得简单,只需在Finder中按下Command+Shift+G组合键,就能直达目的地。
要查找Cron的位置,可以在终端中运行/usr/sbin/cron
命令;而rsync的位置可以通过which rsync
命令直接找到,我的是在/opt/homebrew/bin/rsync
。这样一来,即使是最隐蔽的文件和命令,也无处可藏。