楽しいだけで十分です

好きなことを書きます

MacのHomebrewのアップデートを、cronで自動化する

Macでcronを使って、Homebrewのアップデートを自動化してみました。
作業したことをメモしておきます。
なお、このエントリでは、それぞれの見出しごとに関連しそうな参照リンクを書く形式にしています。

cronの設定前にすること

事前に設定が必要なことがいくつかあります。
この設定をしていないと、cronを登録しても保存されずに、エラーで終了してしまうので、先に設定を済ましておきましょう。

# .zshrcなどシェルの設定ファイル
export EDITOR=vim
" .vimrc
set backupskip=/tmp/*,/private/tmp/*

cronの設定を行う

  • crontabコマンドを使用します(cron tableの略)
  • crontab -eで編集が行えるのですが、タイポによる設定の削除を防ぐために、以下の方法を使うことが推奨です
crontab -l > 任意のパス/crontab    # 現在のcronの設定を、任意のパスに書き出す
vim 任意のパス/crontab             # 上記の書き出したcronを編集
crontab < 任意のパス/crontab       # 編集したcronを、実行するcronに反映する

cronの書式

分 時 日 月 曜日 (実行ユーザー名) cronで実行したいコマンド・スクリプト

ここまでやれば、設定は完了です。
後は設定した時間が来れば、実行されるはず!なのですが、うまく行かなかった人(私です・・・)のために、デバッグ方法や、ハマりそうなポイントを書いておきます。

うまくいかない時は?

おまけ

#!/bin/sh
log_name=任意のログの絶対パス/`date "+%Y%m%d_%H%M%S"`.log

echo 'brew doctor ---------------------------------------------------' >> ${log_name} 2>&1
brew doctor >> ${log_name} 2>&1
if [ $? -ne 0 ]; then
  echo 'brew update ---------------------------------------------------' >> ${log_name} 2>&1
  brew update >> ${log_name} 2>&1
  echo 'brew upgrade --------------------------------------------------' >> ${log_name} 2>&1
  brew upgrade >> ${log_name} 2>&1
  echo 'brew cleanup --------------------------------------------------' >> ${log_name} 2>&1
  brew cleanup >> ${log_name} 2>&1
fi