使用 history 命令(最常用)
作用:直接查看当前用户的历史命令记录。
操作步骤:
- 打开终端,输入:
history
- 显示结果示例:
1 cd ~/Documents 2 ls -l 3 sudo apt update ...(按时间倒序列出所有记录)
高级用法:
- 显示最近10条记录:
history 10 - 清除当前会话记录:
history -c(重启后恢复) - 执行历史命令:
!编号(如!3重新执行第3条命令)
注意:
- 记录默认保存数量由
HISTSIZE变量控制(通常1000~5000条),可通过echo $HISTSIZE查看。 - 仅限当前用户查看自己的记录。
直接查看历史文件(持久化存储)
作用:查看系统永久保存的命令记录文件。
文件路径:
- Bash shell:
~/.bash_history(当前用户家目录下) - Zsh shell:
~/.zsh_history - Root用户:
/root/.bash_history
操作步骤:
cat ~/.bash_history # 查看所有记录 tail -n 20 ~/.bash_history # 查看最近20条
关键特性:
- 文件在用户退出终端时更新,实时操作需结合
history命令。 - 若记录缺失,检查
~/.bashrc是否包含HISTFILE和HISTSIZE配置。
实时监控命令执行(调试场景)
方法:
- 使用
script命令全程录制:script -a command_log.txt # 开始录制(-a表示追加) exit # 结束录制 cat command_log.txt # 查看记录
- 通过
PROMPT_COMMAND实时记录(需配置):
在~/.bashrc中添加:export PROMPT_COMMAND='history -a > /dev/null'
执行
source ~/.bashrc生效,使命令实时写入历史文件。
查看系统级日志(需管理员权限)
作用:审计所有用户的 sudo 命令或登录行为。
日志路径:
/var/log/auth.log(Debian/Ubuntu)/var/log/secure(CentOS/RHEL)
操作示例:
sudo grep 'sudo.*COMMAND' /var/log/auth.log # 过滤sudo命令 sudo tail -f /var/log/secure # 实时监控登录与提权操作 ``` 示例**: ```log Aug 1 10:00:00 server sudo: user : TTY=pts/0 ; COMMAND=/usr/bin/apt update
其他实用技巧
- 反向搜索历史命令:
按Ctrl + R输入关键词,实时搜索历史记录(支持上下键切换)。 - 按时间查看历史:
在~/.bashrc添加HISTTIMEFORMAT="%F %T ",执行source ~/.bashrc,后续history显示执行时间。 - 隔离敏感命令:
命令前加空格(如mysql -u root -p)可跳过记录(需配置HISTCONTROL=ignorespace)。
安全与隐私建议
- 权限管理:
- 普通用户无法查看他人的
~/.bash_history或系统日志(需sudo)。 - 敏感操作建议使用
ssh密钥替代密码。
- 普通用户无法查看他人的
- 记录保护:
- 定期备份历史文件。
- 清除记录:
cat /dev/null > ~/.bash_history(谨慎操作)。
- 合规性:
企业环境中,使用审计工具(如auditd)满足安全合规要求。
引用说明参考 Linux 官方文档(Bash手册)、
man手册页(man history、man bash)及常见运维实践,不同Shell(如Zsh、Fish)或发行版细节可能略有差异,建议结合具体环境验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9008.html