摘要

运维同学们经常会用history命令来查看命令的历史记录,有时候是为了查找”犯罪证据“,但因为history命令输出默认只有ID和command,查找的同学还想知道命令对应的时间,有没有办法让时间也显示出来呢?办法是有的。本文主要讲讲相关的配置。


正文

以root用户登录服务器,在/etc/profile.d/下新建一个文件history_command.sh

vim /etc/profile.c/history_command.sh

export HISTFILE=$HOME/.bash_history

export HISTSIZE=1200

export HISTFILESIZE=1200

export HISTCONTROL=ignoredups

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

shopt -s histappend

typeset -r HISTTIMEFORMAT


source /etc/profile.c/history_command.sh ,使其生效,再敲history命令看看:

#history 5

 1008  root 2015-09-11 08:54:20 vim /etc/profile

 1009  root 2015-09-11 09:13:17 history | less

 1010  root 2015-09-11 09:15:49 vim /etc/profile

 1011  root 2015-09-11 09:43:20 cat /etc/profile.d/history_command.sh 

 1012  root 2015-09-11 09:44:59 history 5


补充:

1. 用户登录机器后每敲一个命令都会被记录到HISTFILE指定的文件中,而且是以追加的方式写入的。

配置中最关键的地方是export HISTTIMEFORMAT="`whoami` %F %T " , 这一行指定history的输出格式。

2. /etc/profile.d/下的.sh结尾的文件会在用户login或切换用户的时候自动执行,注意一定是.sh结尾的脚本文件才会执行,若不是以.sh结尾的话,在登录后切换用户后是不会生效的。不知道在切换用户的时候linux系统都做了哪些操作,以后有时间要研究下linux源代码。