目次
概要 †
システムにログインした直後から、自動的にコマンドの実行履歴をファイルに記録する方法。
本項の前提として、ログインシェルがbashであること。
設定 †
ログを記録したいユーザの.bashrcに以下の内容を追記する。
ログ記録の設定 †
ログはホームディレクトリ直下のCommand-LogsディレクトリにYYYY-MM-DD_HH-MM-SS.logの形式で保存される。
尚、ログ保存用ディレクトリが存在しない場合には、自動的にディレクトリを作成する。
## ## Command Log ## LOGDIR="Command-Logs" test -d ~/$LOGDIR || mkdir ~/$LOGDIR _script="/usr/bin/script" _p_proc=`ps aux | grep -e "${PPID} " | grep -v grep | awk '{print $11}'` if [ "x${_p_proc}" != "x${_script}" ]; then ${_script} -q ~/$LOGDIR/`date +%Y-%m-%d_%H-%M-%S`.log exit fi unset _script unset _p_proc
ログのアーカイブ化 †
出力結果も含めて全て記録されるため、放置するとログは相応の容量となる。
このため、6ヶ月前のログはまとめてアーカイブ化して削除する処理を追加する。
## ## Log Archive ## OLDLOG=`date -d '6 month ago' +%Y-%m` ls -la ~/$LOGDIR | grep $OLDLOG-[0-9][0-9]_ | grep -v grep > /dev/null if [ $? -eq 0 ]; then cd $LOGDIR tar cfvz $OLDLOG.tgz ./$OLDLOG-[0-9][0-9]_*.log > /dev/null rm -f ./$OLDLOG-[0-9][0-9]_*.log > /dev/null fi cd ~
Last-modified: 2013-08-08 (木) 23:18:40 (3913d)