最近要使用到定时任务,linux服务器上直接
crontab -e 就行,奈何mac上没有这个命令,捣鼓一番,记录如下
设置一个定时任务,任务如下,该任务在linux服务器上是可以执行的。
*/1 * * * * python3 /Users/test.py
但是这个任务在mac上是不能执行的。
需要按照一下步骤执行,肯定能搞定,如果还搞不定,私信我。
1、确保crontab在mac上是运行的
# 定时任务统统由 launchctl 来管理的,看看 cron 任务有没有在里面
sudo launchctl list | grep cron
# 有记录。查看一下启动项的配置
locate com.vix.cron
# 创建一个database
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
# 查看 /etc/crontab 是否存在
ls -alF /etc/crontab
# 创建该文件(如果不存在)
sudo touch /etc/crontab
2、验证crontab是否可以执行
crontab -e:编写定时任务脚本
验证 crontab 是否可真正执行
# 每分钟输出当前时间到time.txt上.
*/1 * * * * /bin/date >> /User/time.txt
如果文件有内容,说明能执行。跳转到第4步。
如果文件没有内容,说明crontab不能执行,问题点出在了mac的系统上,看第3步。
3、mac开启crontab的权限
切记,需要勾选。
系统是 OSX 10.15 Catalina 以上的
对 cron 的权限进行了限制
需要在 系统偏好设置 里将 cron 添加 完全磁盘访问权限
重点在这里:::
系统偏好设置 -> 安全性与隐私 -> 选择 隐私 -> 左侧菜单找到完全磁盘访问权限
cron 程序所在目录:
终端输入 whereis cron
打印:/usr/sbin/cron
再输入 open /usr/sbin
在打开的文件夹内找到 cron
把这个文件直接拖动到 系统偏好设置 右侧应用列表框内。勾选上。
可以参考这个动图:https://www.d3tt.com/view/109
4、使用绝对路径
使用python脚本,可能任务还是不执行,主要的原因是:crontab中找不到python的路径。
这个时候需要使用python的绝对路径以及脚本的绝对路径。
如何找python的绝对路径。
which python3