Linux 查看历史命令及时间的方法

2025.5.30 杂七杂八 857

Linux 查看历史命令及时间的方法

本文详细介绍Linux系统中查看历史命令及执行时间的多种方法,包括使用history命令结合环境变量配置、通过.bash_history文件分析,以及借助HISTTIMEFORMAT定制时间戳格式等实用技巧,帮助管理员高效审计操作记录。

一、基础方法:history命令

Linux系统默认通过history命令记录用户执行的命令,但默认不显示时间戳:

 查看最近执行的命令(无时间戳)
history

二、显示命令执行时间

方法1:配置HISTTIMEFORMAT变量

临时生效配置:

export HISTTIMEFORMAT="%F %T "
history

永久生效配置(写入~/.bashrc):

echo 'export HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

方法2:查看.bash_history文件(需提前配置)

确保/etc/profile包含以下配置:

export HISTFILE=~/.bash_history
export HISTFILESIZE=2000
export HISTSIZE=1000
export HISTTIMEFORMAT="%s "

解析历史文件:

awk '{cmd=$0; getline; printf "%s - %sn", strftime("%Y-%m-%d %H:%M:%S",$1), cmd}' ~/.bash_history

三、高级技巧

1. 搜索特定时间段的命令

history | awk -v start="2023-10-01" -v end="2023-10-31" 
'$2 >= start && $2 <= end {print}'

2. 持久化历史记录到独立文件

export PROMPT_COMMAND='history -a; history -c; history -r'
echo 'export PROMPT_COMMAND="history -a"' >> ~/.bashrc

3. 使用logger记录到系统日志

trap 'logger -p local1.notice -t bash "$USER $(history 1)"' DEBUG

四、注意事项

  • 时间戳基于系统时区设置
  • root用户可查看所有用户的.bash_history
  • 通过history -c可清除当前会话历史
  • 禁用历史记录:unset HISTFILE

评论