目次~
#contents
*概要 [#bf110241]
システムにログインした直後から、自動的にコマンドの実行履歴をファイルに記録する方法。~
本項の前提として、ログインシェルがbashであること。~
*設定 [#gfed0950]
ログを記録したいユーザの.bashrcに以下の内容を追記する。~
**ログ記録の設定 [#o22f408c]
ログはホームディレクトリ直下のCommand-LogsディレクトリにYYYY-MM-DD_HH-MM-SS.logの形式で保存される。~
尚、ログ保存用ディレクトリが存在しない場合には、自動的にディレクトリを作成する。~
**ログ記録の設定 [#o22f408c]
##
## 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
**ログのアーカイブ化 [#c477e08f]
出力結果も含めて全て記録されるため、放置するとログは相応の容量となる。~
このため、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 ~