macOS 11.6.1中Cron任务未执行问题求助
macOS 11.6.1下Cron执行zsh脚本无输出的问题排查与解决
问题场景
- 系统版本:macOS 11.6.1
- 目标脚本
task1.zsh内容:
#!/bin/zsh /usr/bin/touch /Users/user/Documents/cronjobs/hello.txt echo hello >> /Users/user/Documents/cronjobs/hello.txt
- 脚本权限:
-rwxr-x--x 1 user staff 116B Jun 18 00:15 task1.zsh*
- 尝试的Cron任务写法(均未生成
hello.txt):
# 写法1 * * * * * /Users/user/Documents/cronjobs/task1.zsh # 写法2 * * * * * cd /Users/user/Documents/cronjobs/ && ./task1.zsh # 写法3(语法错误,cd后未用分隔符) * * * * * cd /Users/user/Documents/cronjobs /bin/zsh task1.zsh # 写法4 * * * * * /bin/zsh /Users/user/Documents/cronjobs/task1.zsh
- 异常现象:同时添加的Cron任务
* * * * * cd /Users/user/Documents/cronjobs && echo check >> cron1.log可正常生成并写入cron1.log,但hello.txt始终无变化
核心原因与解决方法
1. 全磁盘访问权限限制(最可能原因)
macOS Big Sur及以后版本,Cron默认被限制了全磁盘访问权限,无法写入用户的Documents目录,即使路径和权限看似正确。解决步骤:
- 打开「系统偏好设置」→「安全性与隐私」→「隐私」标签页
- 找到「全磁盘访问权限」,点击左下角锁图标,输入密码解锁
- 点击+号,在文件选择窗口中按
Cmd+Shift+G,输入/usr/sbin/cron,选中并添加到权限列表 - 重启Cron服务:
sudo launchctl stop com.vix.cron && sudo launchctl start com.vix.cron
2. 验证脚本与排查日志
- 手动执行脚本确认功能正常:
/Users/user/Documents/cronjobs/task1.zsh
若手动执行能生成hello.txt,则进一步确认是Cron权限问题
- 查看Cron执行日志,排查具体报错:
tail -f /var/log/cron
日志中会显示权限拒绝等明确错误信息,帮助定位问题
3. 修正错误的Cron语法
你尝试的第三种写法存在语法错误,cd命令后未用&&或;分隔后续命令,正确写法应为:
* * * * * cd /Users/user/Documents/cronjobs && /bin/zsh task1.zsh
内容的提问来源于stack exchange,提问作者ecjb
相关产品推荐
相关产品推荐

