目前公司有几台机器比较重要,需要把所有用户的操作记录下来,于是就是参照资料来完成
1. vim /etc/profile.d/oplogrc.sh
logdir=/opt/oplog userdir=$logdir/${LOGNAME} DT=`date +"%Y%m%d"` export HISTFILE="/$userdir/history.$DT" export HISTTIMEFORMAT="%F %T :" export HISTSIZE=128 export HISTFILESIZE=8192 export PROMPT_COMMAND="history -a" if [ ! -d $logdir ];then mkdir -p $logdir chmod 777 $logdir fi if [ ! -d $userdir ];then mkdir -p $userdir chmod 300 $userdir fi shopt -s histappend readonly HISTFILE readonly HISTTIMEFORMAT readonly HISTSIZE readonly HISTFILESIZE readonly PROMPT_COMMAND readonly HISTCMD readonly HISTCONTROL
该文件定义了记录history的位置,目录,并且设置这些环境变量只读
2. vim /opt/shells/optlogcron.sh
logdir=/opt/oplog userdir=$(ls $logdir) DT=`date +"%Y%m%d"` for user in $userdir;do hisfile="$logdir/$user/history.$DT" if [ ! -f $hisfile ];then touch $hisfile chown $user:$user $hisfile chmod 300 $hisfile chattr +a $hisfile else lsattr $hisfile | awk '{ print $1 }' | grep -v "a" &> /dev/null && chmod 300 $hisfile && chattr +a $hisfile fi find . -type f -size 0 -mtime +1 -exec chattr -a {} ; find . -type f -size 0 -mtime +1 -exec rm -f {} ; done
o该文件主要用途是让日志文件加上特殊权限,防止被删除,清楚一天前的空日志。
3. crontab -e
*/1 * * * * /opt/shells/oplogcron.sh &> /dev/null
每分钟执行一下。