使用 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