对于一些系统以及项目依赖,个人都有跟进的习惯;

Macos 内置 launchctl 来写定时任务..不会...

还是选择了linux常用的 crontab ;

问题

这问题可能是系统安全策略的问题.我一开始尝试了好久;

不管是用 Root 还是自身用户..都会报 Operation not permitted (任务没法写入);

开始没想到是系统版本太新(安全策略)的问题,实在没辙只能去找来同事一起排查,排除了语法还是其他一些问题,

还是有问题,我说要不去你电脑试试,他的是10.13(能正常运行).于是开始谷歌大法,终于在国外的论坛也有遇到类似的问题..

有说到关闭 Rootless 机制的,也有说添加硬盘操作权限的,我选择了后者;

关闭 Rootless 的机制

我没试过这个姿势..有兴趣的自己试试..

添加硬盘访问权限的,就是把你的终端加进去这里
Fixed: MacOS Mojave(10.14) 解决终端用Crontab报权限问题(不管是Root还是普通用户)及 ...
Crontab的姿势

crontab 的用法还是很简单的

-e -u -l -r

不带用户参数都是都是基于当前用户来启用 crontab 控制

语法格式: 分钟 小时 日 月 周 command shell_file

# demo */5 * * * * /bin/zsh /Users/linqunhe/Code/u-logs/autoShell.sh # / 是每隔, 还支持 , - 这类指定和连续的..具体看对应的手册吧 复制代码

脚本的权限记得设置好,比如你指定普通用户的, 744 便足以

r:4 , w:2 ,x : 1 ; u-g-o(自己/组/其他) -rwxr--r--@ 1 linqunhe staff 867B Dec 7 14:50 autoShell.sh 复制代码 我的调度需求很简单,就是更新一些东西,有涉及到alias , 用到了zsh(因为写在.zshrc) #!/bin/zsh source ~linqunhe/.zshrc logPath="/Users/linqunhe/Code/u-logs/logs/$(date +'%Y-%m-%d').log" echo '--------更新脚本开始走起--------------' >> $logPath # 更新NG项目 cd /Users/linqunhe/Code/ng-sx-pc ng update --all 2>&1 >> $logPath echo '---------Ng Update End-------------' >> $logPath # 更新nuxt项目 cd /Users/linqunhe/Code/nuxt2-sx-mobile-share yarn outdated 2>&1 >> $logPath yu echo '---------Nuxt Update End-------------' >> $logPath # 更新umi项目(yu是我写的alias) cd /Users/linqunhe/Code/umi_dva_sx_admin yarn outdated 2>&1 >> $logPath yu echo '---------Umi Update End-------------' >> $logPath # 更新老的react-sx-admin cd /Users/linqunhe/Code/react-sx-admin yarn outdated 2>&1 >> $logPath yu echo '---------react-sx-admin Update End-------------' >> $logPath # 更新全局的yarn npmyarn ygu 2>&1 >> $logPath echo '---------yarn global Update End-------------' >> $logPath # 列出全局的npm 包 ygl 2>&1 >> $logPath echo '---------yarn global list End-------------' >> $logPath # 更新brew && brew cask brew prune brew update 2>1 >> $logPath brew upgrade 2>&1 >> $logPath brew cask upgrade 2>&1 >> $logPath echo '----------Brew && Brew Cask Update End------------' >> $logPath # 更新MAC系统 softwareupdate -i -a 2>&1 >> $logPath echo '--------Mac OS Update End--------------' >> $logPath echo '--------更新脚本结束--------------' >> $logPath 是1,所以">/dev/null"等同于"1>/dev/null" # 2 :表示stderr标准错误 # & :表示等同于的意思,2>&1,表示2的输出重定向等同于1 复制代码 输出就这样了 2018-12-07.log
Fixed: MacOS Mojave(10.14) 解决终端用Crontab报权限问题(不管是Root还是普通用户)及 ...

本文系统(linux)相关术语:linux系统 鸟哥的linux私房菜 linux命令大全 linux操作系统

分页:12
转载请注明
本文标题:Fixed: MacOS Mojave(10.14) 解决终端用Crontab报权限问题(不管是Root还是普通用户)及 ...
本站链接:https://www.codesec.net/view/620832.html


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 系统(linux) | 评论(0) | 阅读(14)