Linux系统当你在shell(控制台)中输入并执行命令时,shell会自动把你的命令记录到历史列表中,一般保存在用户目录下的.bash_history文件中。默认情况下,history 不记录命令的执行时间,如果要记录哪个用户执行了某些命令则需要我们通过修改/etc/profile 文件来实现

首先history显示用户名和命令执行时间比较简单,只要在/etc/profile文件追加

        export HISTTIMEFORMAT="%F %T `whoami` "


如果要显示登录IP,则需要先获取到源登录IP:

        USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

        if [ "$USER_IP" = "" ]

            then

                USER_IP=`hostname`

        fi


然后将USER_IP写入HISTTIMEFORMAT 即可

        export HISTTIMEFORMAT="%F %T `whoami` $USER_IP "


然后 source /etc/profile(不用重新登录而立刻生效) 执行history | more


1000  2014-12-08 10:05:09 root 192.168.10.136 history

1001  2014-12-08 10:14:24 root 192.168.10.136 cd root

1002  2014-12-08 10:14:27 root 192.168.10.136 ls

1003  2014-12-08 10:14:30 root 192.168.10.136 cd /opt

注意:当 HISTTIMEFORMAT 这个环境变量被设置之后,之后的那些新执行的 bash 命令才会记录执行时间,在设置HISTTIMEFORMAT变量之前,命令执行的时间默认是不被记录的。