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变量之前,命令执行的时间默认是不被记录的。
转载于:https://blog.51cto.com/whitepoppy/1617899