本文详细介绍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
评论