linux 实时监控shell执行命令 记录日志
linux 系统 实时监控shell执行命令 记录日志
原理
在linux系统中,history命令可以输出历史命令,历史命令默认保存在文件~/.bash_history中。
扩展
HISTFILESIZE 定义了在 .bash_history 中最大保存命令的记录数 HISTSIZE 定义了向.bash_history文件中追加的最大行数,一般这两个值相等
方式1
创建日志目录并且设置权限
mkdir -p /var/log/his
修改profile文件
export HISTFILE="/var/log/his/(date′+(who am i | sed "s/[ ][ ]*/ /g"); history 1 | { read x date time cmd; echo "date{
time} user{
cmd}"; } >> $HISTFILE
方式二
把下面的代码粘贴到 /etc/profile 文件 后面可以设置 HISTFILE 变量把登录信息记录到 /var/log/history目录下
##################################
# bash history #
##################################
# IP
USER_IP=`who am i 2>/dev/null| awk {print $NF}|sed -e s/[()]//g`
if [ "$USER_IP" = "" ]
then
USER_IP=`hostname`
fi
# history_log output dirctory
if [ ! -d /var/log/history ]
then
mkdir /var/log/history
chmod 777 /var/log/history
fi
# history_log output file
if [ ! -d /var/log/history/${LOGNAME} ]
then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
# var
HISTSIZE=4096
export HISTSIZE
DT=`date "+%Y%m%d_%H%M%S"`
export DT
HISTFILE="/var/log/history/${LOGNAME}/$DT.${USER_IP}.hist"
export HISTFILE
chmod 600 /var/log/history/${LOGNAME}/*.hist 2>/dev/null
umask 022
参考
上一篇:
Python 安装包管理工具 pip
