對於一些系統以及項目依賴,我的都有跟進的習慣;react
MacOS內置launchctl
來寫定時任務,不會。shell
仍是選擇了Linux經常使用的crontab
;npm
這問題多是系統安全策略的問題.我一開始嘗試了很久;安全
無論是用root
仍是自身用戶,都會報Operation not permitted
(任務無法寫入);bash
開始沒想到是系統版本太新(安全策略)的問題,實在沒轍只能去找來同事一塊兒排查,排除了語法仍是其餘一些問題,ui
仍是有問題,我說要不去你電腦試試,他的是10.13(能正常運行).spa
添加硬盤訪問權限的,就是把你的終端加進去這裏nuxt
crontab
的用法仍是很簡單的code
-e
: 就是進入編輯-u
: 指定用戶-l
: 列出調度清單-r
: 刪除調度任務不帶用戶參數都是都是基於當前用戶來啓用crontab
控制cdn
語法格式:分鐘 小時 日 月 周 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
複製代碼
輸出就這樣了
爲何在本本寫任務調度,由於筆記本常年不關機..基本都是待機狀態,開蓋即用..
有不對之處請留言,會及時修正. 謝謝閱讀