[Mac][ターミナル]ターミナルのログを自動で取得する


目的

  • ターミナルを起動したときに自動でログを取得したい
    • 出力をコピーするのが面倒くさい
      • 障害対応で毎度コピーするくらいなら最初から設定したい
    • 振り返りたい
      • 操作したコマンドなんだっけ?
      • あの時の実行結果どうだったけ?
    • 監査目的
      • 操作ログは残せ!と言われた
    • 超慎重派

設定方法

ログ出力用のディレクトリを作成する

mkdir -p /Users/[username]/scriptlogs/

[ターミナル.app]を起動する

[ターミナル] - [環境設定]を開く

[設定]- [シェル]を開いて、[コマンドを実行]にチェックを入れる

以下をテキストボックスに入力

now=`date +%Y%m%d%H%M%S`;logpath=~/scriptlogs/script_${now}.txt ;script ${logpath}

ログファイルが沢山増えたときに探したりlsが遅くなったりして大変になるので、ディレクトリを分けたければ、ディレクトリ用の変数と、ファイル名用の変数を設定する。
mkdir -p を使えばディレクトリがなければ作成してくれるし、なければ何もしない(エラーも吐かない)。
e.g. ~/scriptlogs/yyyy/mm/dd/script_hhmmss.txt

directory=~/scriptlogs/$(date +%Y)/$(date +%m)/$(date +%d);filename=script_$(date +%H%M%S).txt;mkdir -p ${directory}; script ${directory}/${filename}

ターミナルを一度閉じる

ターミナルを起動する

以下のように表示される

Last login: Tue Feb 11 18:01:38 on ttys002
now=`date +%Y%m%d%H%M%S`;logpath=/Users/[username]/scriptlogs/script_${now}.txt ;script ${logpath}
[username]-no-MacBook-Air:~ [username]$ now=`date +%Y%m%d%H%M%S`;logpath=/Users/[username]/scriptlogs/script_${now}.txt ;script ${logpath}
Script started, output file is /Users/[username]/scriptlogs/script_20140211180947.txt
bash-3.2$ 

「bash-3.2$」ってプロンプトが気に食わない人は…

bash --login