目次

概要

システムにログインした直後から、自動的にコマンドの実行履歴をファイルに記録する方法。
本項の前提として、ログインシェルが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 ~

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-08-08 (木) 23:18:40 (2970d)