设置Histfile变量时,历史记录命令不起作用



我们有一个通用的Linux测试ENV,其中有多个人工作(使用Putty通过SSH连接),我们需要存储从所有终端发射的命令的要求,以便我们可以跟踪每个命令,并通过哪个IP/用户和哪个tty触发,以便我们可以使用'last'命令对其进行验证。

我已经更改了我的.bash_profile

# Will Give me ip of person logged in
WHOAMI=`who -m | cut -d '(' -f 2| cut -d ')' -f1`  
# Will give me tty ID
MYTTY=`who -m | awk '{print $2;}' | cut -d '/' -f2`
DATE=`date +"%Y_%m_%d_%H%M%S"`
DAY=`date +"%Y_%m_%d"`
shopt -s histappend
mkdir -p $HOME/HISTORY/${WHOAMI}/${DAY}
touch $HOME/HISTORY/${WHOAMI}/${DAY}/.HIST_${MYTTY}_${DATE}
export HISTTIMEFORMAT='%F %T '
export HISTFILESIZE=100
export HISTSIZE=100
# stores history file per terminal
export HISTFILE=$HOME/HISTORY/${WHOAMI}/${DAY}/.HIST_${MYTTY}_${DATE}
export PS1='[[e[4;32m]u@h[e[0m] [e[1;36m]$PWD[e[0m]]! $'
# Updates the HISTFILE at real time i.e. when user presses enter
export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"
history -r $HISTFILE

更改.bash_profile后,history命令停止显示以前的条目。

当我将PROMPT_COMMAND更改为"history -a; history -r; ${PROMPT_COMMAND}"时,它开始工作,但

  1. HISTFILE未实时更新;它仅在发出退出命令时才更新。

  2. 如果用户通过右键单击断开腻子会话并使用Disconnect选项,则根本不更新HISTFILE。:(

p.s: - 如果我注释export HISTFILE,它将其存储到.bash_history文件,并且一切正常工作,并且.bash_history实时更新,但是我没有获得命令命令的TTY ID或IP

>

o.s: - 红色帽子企业Linux服务器版本6.8(Santiago)

更换

touch $HOME/HISTORY/${WHOAMI}/${DAY}/.HIST_${MYTTY}_${DATE}

printf "#`date '+%s'`nlln" > $HOME/HISTORY/${WHOAMI}/${DAY}/.HIST_${MYTTY}_${DATE}

做到了这个技巧,因此似乎只有在历史程序文件中有一些数据时,历史记录命令才能实时正确更新它,否则才会在触发exit命令时才对其进行更新。

最新更新