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 10.14 Mojave后Caps lock(大写键)无法使用的解决办法
升级至macOS 10.14 Mojave后Caps lock(大写键)无法使用的解决办法
196 0
升级至macOS 10.14 Mojave后Caps lock(大写键)无法使用的解决办法
|
C语言 iOS开发 MacOS
记一次macOS Mojave升级GCC
目录 前言 安装GCC 最后 前言 最近迷上了泛型编程, 看到了C++11, 14, 17的很多酷炫新特性. 之前也是在Linux下也跑了一些代码, 所以不觉得放到mac会有什么问题, 直到我看了mac默认的GCC版本, 4.
1637 0
|
iOS开发 MacOS 开发工具
【作死】更新macOS Mojave后Vagrant无法使用
Vagrant box 无法启动 There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox.
1725 0
|
iOS开发 MacOS
macOS 查看、修改文件、文件夹权限的命令
1、查看文件/文件夹权限: 1、查看某个文件权限的命令 ls -l + 要查看文件的文件名 1 2、查看某个文件夹里所有文件/文件夹的权限 ls -l + 文件夹名 1 3、如果要查看某个文件夹的权限,需要在该文件夹外部目...
4211 0
|
3月前
|
关系型数据库 MySQL 数据库
【Mac os系统】安装MySQL数据库
本文详细介绍了在Mac OS系统上安装MySQL数据库的步骤,包括下载、安装、配置环境变量、启动服务、授权设置以及解决常见问题,并提供了一些常用的MySQL命令。
199 0
【Mac os系统】安装MySQL数据库
|
4月前
|
Linux 虚拟化 iOS开发
部署06--MacOS安装VMware Fusion安装
部署06--MacOS安装VMware Fusion安装
|
3月前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
139 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
3月前
|
虚拟化 数据安全/隐私保护 iOS开发
VMware——安装MacOS 系统教程(仅供学习交流)
VMware——安装MacOS 系统教程(仅供学习交流)
74 4
|
5月前
|
Java Shell 开发工具
03. 【Java教程】在 MacOS 上安装 Java
03. 【Java教程】在 MacOS 上安装 Java
58 1
|
5月前
|
JavaScript iOS开发 开发者
pnpm的安装与配置(Windows/macOS)
pnpm的安装与配置(Windows/macOS)
1737 0