如何查看Linux命令历史记录?

使用 history 命令(最常用)

作用:直接查看当前用户的历史命令记录。
操作步骤

  1. 打开终端,输入:
    history
  2. 显示结果示例:
    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 是否包含 HISTFILEHISTSIZE 配置。

实时监控命令执行(调试场景)

方法

  1. 使用 script 命令全程录制
    script -a command_log.txt  # 开始录制(-a表示追加)
    exit                       # 结束录制
    cat command_log.txt        # 查看记录
  2. 通过 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

其他实用技巧

  1. 反向搜索历史命令
    Ctrl + R 输入关键词,实时搜索历史记录(支持上下键切换)。
  2. 按时间查看历史
    ~/.bashrc 添加 HISTTIMEFORMAT="%F %T ",执行 source ~/.bashrc,后续 history 显示执行时间。
  3. 隔离敏感命令
    命令前加空格(如 mysql -u root -p)可跳过记录(需配置 HISTCONTROL=ignorespace)。

安全与隐私建议

  1. 权限管理
    • 普通用户无法查看他人的 ~/.bash_history 或系统日志(需 sudo)。
    • 敏感操作建议使用 ssh 密钥替代密码。
  2. 记录保护
    • 定期备份历史文件。
    • 清除记录:cat /dev/null > ~/.bash_history(谨慎操作)。
  3. 合规性
    企业环境中,使用审计工具(如 auditd)满足安全合规要求。

引用说明参考 Linux 官方文档(Bash手册)、man 手册页(man historyman bash)及常见运维实践,不同Shell(如Zsh、Fish)或发行版细节可能略有差异,建议结合具体环境验证。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9008.html

(0)
酷番叔酷番叔
上一篇 2025年7月28日 09:47
下一篇 2025年7月28日 10:01

相关推荐

  • 国内中台战略检测,效果如何,挑战几何?

    效果提升复用与效率,但面临组织协同难、维护成本高及业务适配挑战。

    2026年2月22日
    8000
  • 安全AI报价多少?

    在数字化转型的浪潮中,人工智能(AI)技术正以前所未有的速度渗透到各行各业,从金融风控、医疗诊断到智能制造、智慧城市,AI的应用场景不断拓展,随着AI技术的普及,其安全性问题也日益凸显,数据泄露、算法偏见、模型被攻击等风险成为企业部署AI时必须跨越的障碍,在此背景下,“安全AI报价”成为企业关注的焦点,它不仅关……

    2025年11月28日
    12500
  • exp命令怎么用?操作步骤与注意事项详解

    exp命令是Oracle数据库经典的数据导出工具,主要用于将数据库中的对象(如表、索引、视图、存储过程等)及数据导出为二进制格式文件(.dmp),实现数据备份、迁移、跨平台传输等需求,尽管Oracle后续推出更高效的Data Pump工具(expdp/impdp),但exp命令因操作简单、兼容性较好,仍被部分用……

    2025年8月23日
    13800
  • 安全数据图表如何助力安全决策与风险防控?

    安全数据图表是将复杂的安全数据通过可视化手段转化为直观图形的工具,它不仅是安全团队分析威胁、监控态势的核心载体,更是企业管理层快速理解风险、制定决策的重要依据,在数字化时代,网络攻击手段日益复杂,数据量呈指数级增长,传统文字报告难以高效传递关键信息,而安全数据图表通过图形、颜色、动态交互等元素,让安全状态“看得……

    2025年11月11日
    13800
  • 请问在Windows操作系统下,通过cmd命令开启端口的详细步骤是什么?

    在Windows系统中,命令提示符(CMD)是常用的网络管理工具之一,通过它可以快速配置防火墙规则来开启特定端口,以满足应用程序或服务的网络访问需求,本文将详细介绍如何使用CMD命令开启端口,包括常用语法、参数说明及操作步骤,帮助用户高效完成端口配置,开启端口的核心命令与语法在Windows防火墙中,开启端口主……

    2025年8月29日
    16300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信