如何查看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

相关推荐

  • 如何用arp命令掌握ARP协议?

    ARP协议实现局域网内IP地址到MAC地址的转换,确保设备间通信,arp命令用于查看、添加或删除本机的ARP缓存表项,管理地址解析信息。

    2025年7月26日
    2300
  • 核心命令,su 和 sudo su

    在 macOS 系统中,虽然图形界面切换用户非常直观(通过菜单栏或登录窗口),但有时你可能需要通过命令行(终端)来执行用户切换操作,例如进行自动化脚本、远程管理或特定故障排查,以下是几种在 Mac 终端中切换用户的主要命令和方法,以及重要的安全注意事项:su – [用户名]作用: 这是最直接的“切换用户”命令……

    2025年7月30日
    2200
  • 如何快速定位问题并系统解决?

    当Photoshop(PS)中的命令或工具无法正常使用时,通常由软件冲突、设置错误、文件损坏或系统限制导致,请按以下顺序逐步排查,90%以上的问题可得到解决:基础检查(5分钟快速排查)验证操作对象→ 确认当前图层是否被锁定(检查图层面板锁形图标)→ 检查图层类型(文字图层/智能对象/背景层需右键栅格化或解锁……

    2025年7月14日
    3200
  • 如何快速关闭命令行窗口?

    结束命令行指终止当前命令行会话或进程的操作,常用方法包括输入exit或logout命令退出终端,或使用Ctrl+C强制终止正在运行的程序。

    2025年8月5日
    1800
  • cad命令rec怎么用

    D中REC命令用于绘制矩形,执行后指定第一个角点和对角点或输入

    2025年8月10日
    1400

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信