Fixed: MacOS Mojave(10.14) 解决终端用crontab报权限问题

简介: 对于一些系统以及项目依赖,个人都有跟进的习惯;MacOS内置launchctl来写定时任务,不会。还是选择了Linux常用的crontab;


前言


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


MacOS内置launchctl来写定时任务,不会。


还是选择了Linux常用的crontab;


问题及解决方案


问题


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


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


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


还是有问题,我说要不去你电脑试试,他的是10.13(能正常运行).


解决方案


添加硬盘访问权限的,就是把你的终端加进去这里



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



目录
相关文章
|
iOS开发 MacOS
macOS 查看、修改文件、文件夹权限的命令
1、查看文件/文件夹权限: 1、查看某个文件权限的命令 ls -l + 要查看文件的文件名 1 2、查看某个文件夹里所有文件/文件夹的权限 ls -l + 文件夹名 1 3、如果要查看某个文件夹的权限,需要在该文件夹外部目...
4011 0
|
iOS开发 MacOS 内存技术
解决 XtraFinder、TotalFinder 无法安装的问题(支持 macOS Monterey)
解决 XtraFinder、TotalFinder 无法安装的问题(支持 macOS Monterey)
832 0
|
3天前
|
Shell iOS开发 MacOS
在macOS上安装Homebrew教程
在macOS上安装Homebrew教程
21 0
|
3天前
|
编解码 Oracle iOS开发
VirtualBox虚拟机安装Mac OS X Lion系统详解
VirtualBox虚拟机安装Mac OS X Lion系统详解
17 1
|
3天前
|
数据安全/隐私保护 iOS开发 MacOS
|
3天前
|
JavaScript 前端开发 iOS开发
【macOS 系列】如何在mac下安装nvm实现多版本nodejs
【macOS 系列】如何在mac下安装nvm实现多版本nodejs
68 0
|
9月前
|
Linux iOS开发 MacOS
安装Python 在 Windows、macOS 和 Linux上的详细步骤
安装Python 在 Windows、macOS 和 Linux上的详细步骤
113 2
|
10月前
|
编解码 搜索推荐 虚拟化
Windows平台安装MacOS虚拟机 - VMware(结尾附视频)(下)
Windows平台安装MacOS虚拟机 - VMware(结尾附视频)
209 0
|
9月前
|
iOS开发 MacOS
ubuntu22/20 安装macos 主题桌面
ubuntu22/20 安装macos 主题桌面
330 0
|
9月前
|
iOS开发 MacOS
MacOS安装淘宝镜像报错
MacOS安装淘宝镜像报错
109 0